/*auto readmore*/ /*auto readmore*/ /* an hien script*/ // an hien password /*an hien ma chuong trinh cong tru */ /*Scrollbox thanh cuon*/ /***Nhung CODE***/ /* dòng xanh dòng trắng */ /* https://cdnjs.com/libraries/prism lay thu vien, can vao ten file ma goi 1. copy link vao vi du:prism-python.min.js 2. ten ngon nua la python */ /*=== New posts ===*/ /*header slider*/ /*=== bai viet lien quan===*/ /*===tabcode===*/

Học Python Qua Ví Dụ #006 - Python File Handle/Xử Lý File Trong Python

Yêu cầu:
1. Mở, đọc file và in nội dung file ra màn hình - Read
2. Mở và tự động đóng file sau khi đọc
3. Tạo và ghi file - Write
4. Ghi thêm dữ liệu vào file - Append

Thực hiện:
1. Mở, đọc file và in nội dung file ra màn hình - Read
  • Soạn ile DATA.txt có nội dung như dưới:
  • Thực hiện mở và đọc tất cả các dòng trong file, in ra màn hình:
Code:
f = open("DATA.txt","r") # r - read đọc, nếu file CÓ TỒN TẠI thì sẽ mở ra và đọc, nếu KHÔNG có sẽ lỗi 
print(f.read()) # đọc hết file
f.close() # đóng để giải phóng bộ nhớ

Noted:Với code trên nếu không tìm thấy file sẽ chương trình sẽ bị lỗi và không thực hiện các lệnh bên dưới.

Kết quả:
C:\python>python Demo.py
Interface                          IP-Address         OK?     Method        Status                Protocol
FastEthernet0/0              192.168.122.11  YES     NVRAM          up                    up
Serial0/0                          unassigned        YES     NVRAM         administratively down down
FastEthernet0/1              unassigned         YES     NVRAM        administratively down down
Serial0/1                          unassigned        YES     NVRAM        administratively down down
FastEthernet1/0              unassigned         YES     NVRAM        administratively down down
FastEthernet2/0              unassigned         YES     NVRAM        administratively down down
Loopback1                     10.10.10.1           YES     NVRAM          up                    up
Loopback2                     10.10.10.2           YES     NVRAM          up                    up



C:\python>

  • Hoặc đọc từng dòng từng dòng một trong file

Code:
f = open("DATA.txt","r") # r - read đọc, nếu file CÓ TỒN TẠI thì sẽ mở ra và đọc, nếu KHÔNG có sẽ lỗi 
print(f.readline()) # đọc từng dòng
print(f.readline())
print(f.readline())
print(f.readline())
f.close() # đóng để giải phóng bộ nhớ

Kết quả:
C:\python>python Demo.py
Interface                          IP-Address         OK?     Method        Status                Protocol
FastEthernet0/0              192.168.122.11  YES     NVRAM          up                    up
Serial0/0                          unassigned        YES     NVRAM         administratively down down

Kết quả trên cho thấy là nếu muốn đọc 4 dòng thì chúng ta phải dùng 4 dòng print(f.readline()) (vì có dòng trên cùng là dòng trắng trên cùng nên chúng ta thấy chỉ 3 dòng) cứ mỗi lần đọc như vậy con trỏ đọc/ghi seek() sẽ trượt, nếu chúng chúng ta muốn truy xuất lấy lại dữ liệu từ đầu file có 2 cách:

- Cách 1: đóng file và mở lại
- Cách 2: đưa con trỏ seek() về đầu file bằng lệnh f.seek(0)

  • Hoặc đọc từng dòng và đọc cho đến khi hết file.
Code:
f = open("DATA.txt","r") # r - read đọc, nếu file CÓ TỒN TẠI thì sẽ mở ra và đọc, nếu KHÔNG có sẽ lỗi 
for pl in f: # đọc cho đến hết file
	#print(pl) # kết quả sẽ chèn thêm dòng trắng sau mỗi dòng kết quả
	print(pl, end="") # xóa bỏ dòng trắng
f.close() # đóng để giải phóng bộ nhớ

Kết quả:

2. Mở và tự động đóng file sau khi đọc.

Code:
'''
Cách mở file tự động đóng
nó sẽ tự động đóng khi kết thúc khối lệnh trong with
'''
with open("DATA.txt","r") as f:
	output = f.read()
print(output)

Kết quả:
C:\python>python Demo.py
Interface                          IP-Address         OK?     Method        Status                Protocol
FastEthernet0/0              192.168.122.11  YES     NVRAM          up                    up
Serial0/0                          unassigned        YES     NVRAM         administratively down down
FastEthernet0/1              unassigned         YES     NVRAM        administratively down down
Serial0/1                          unassigned        YES     NVRAM        administratively down down
FastEthernet1/0              unassigned         YES     NVRAM        administratively down down
FastEthernet2/0              unassigned         YES     NVRAM        administratively down down
Loopback1                     10.10.10.1           YES     NVRAM          up                    up
Loopback2                     10.10.10.2           YES     NVRAM          up                    up



C:\python>

3. Tạo và ghi file - Write

  • Nếu file GhiDATA.txt chưa có thì tạo file mới với tên GhiDATA.txt
  • Nếu file đã có thì ghi đè nội dung lên file này

Code:
'''
"w" - Write
- Nếu file chưa có thì tạo file mới, 
- Nếu file đã tồn tại rồi thì xóa và ghi đè lên nội dung cũ
'''
f = open("GhiDATA.txt","w") 
f.write("Ghi lan thu 1\n")
f.write("Ghi lan thu 2\n")
f.write("...\n")
f.write("...\n")
f.write("Ghi lan thu n")

f.flush() # thực hiện ghi nội dung vào file
f.close() # nếu không có dòng "f.flush()", khi đóng file thì python thực hiện flush trước khi đóng.
'''
Đọc file mới ghi
'''
f = open("GhiDATA.txt","r")
print(f.read())
f.close()
Kết quả:
C:\python>python Demo.py
Ghi lan thu 1
Ghi lan thu 2
...
...
Ghi lan thu n

C:\python>


4. Ghi thêm dữ liệu vào file - Append
  • Nếu file GhiDATA.txt chưa có thì tạo file mới với tên GhiDATA.txt
  • Nếu file đã có thì chèn/thêm nội dung cần ghi vào cuối file

Code:
'''
"a" - Append
- Nếu file chưa có thì tạo file mới, 
- Nếu file đã tồn tại mở và GHI THÊM vào cuối nội dung của file
'''
f = open("GhiDATA.txt","a") 
f.write("\n")
f.write("GHI THEM VAO FILE\n")
f.write("Tiep tuc GHI THEM \n")

f.flush() # thực hiện ghi nội dung vào file
f.close() # nếu không có dòng "f.flush()", khi đóng file thì python thực hiện flush trước khi đóng.
'''
Đọc file mới ghi
'''
f = open("GhiDATA.txt","r")
print(f.read())
f.close()

Kết quả:
C:\python>python Demo.py
Ghi lan thu 1
Ghi lan thu 2
...
...
Ghi lan thu n
GHI THEM VAO FILE
Tiep tuc GHI THEM


C:\python>

Xong!

No comments:

Post a Comment

/*header slide*/