Thao tác tệp với python

Python là ngôn ngữ lập trình được diễn giải và nhập động phổ biến để xây dựng các dịch vụ web, ứng dụng dành cho máy tính để bàn, tập lệnh tự động hóa và các dự án máy học. Các lập trình viên thường phải truy cập hệ thống tệp của hệ điều hành khi họ làm việc với các dự án phần mềm dựa trên Python

Ví dụ: chúng tôi sử dụng tệp văn bản làm đầu vào, ghi tệp văn bản làm đầu ra và xử lý tệp nhị phân thường xuyên. Giống như bất kỳ ngôn ngữ lập trình đa năng, phổ biến nào khác, Python cũng cung cấp các tính năng xử lý tệp đa nền tảng. Python cung cấp các tính năng xử lý tệp thông qua một số chức năng sẵn có và mô-đun tiêu chuẩn

Trong bài viết này, tôi sẽ giải thích mọi thứ bạn cần biết về xử lý tệp Python, bao gồm

điều kiện tiên quyết

Trước khi bắt đầu với hướng dẫn, hãy đảm bảo rằng bạn đã cài đặt trình thông dịch Python 3. Nếu không, hãy cài đặt trình thông dịch Python mới nhất từ ​​các bản phát hành chính thức. Bạn cũng có thể sử dụng các đoạn mã của hướng dẫn này trong các dự án Python hiện có của mình

Đọc tệp trong Python

Là hoạt động đầu tiên, hãy viết một số mã để đọc tệp văn bản. Trước tiên chúng ta cần tạo một đối tượng tệp để đọc tệp

Python cung cấp hàm

myFile = open("myFile.txt", "r")
print(myFile.read(11)) # Programming
myFile.close()
8 sẵn có để tạo một đối tượng tệp với một số chế độ, chẳng hạn như chế độ đọc, chế độ ghi, v.v. Tạo một tệp văn bản có tên
myFile = open("myFile.txt", "r")
print(myFile.read(11)) # Programming
myFile.close()
9 và nhập nội dung sau

Programming languages
C
C++
Python
JavaScript
Go

Bây giờ, tạo một tệp mới có tên

myFile = open("myFile.txt")

print(myFile.read(11)) # Programming
print(myFile.read(10)) # languages
myFile.seek(0) # Sets file cursor to the beginning
print(myFile.read(11)) # Programming
myFile.close() 
0 và thêm đoạn mã sau

myFile = open("myFile.txt", "r") # or open("myFile.txt")
print(myFile.read())
myFile.close()

Dòng đầu tiên của đoạn mã trên tạo đối tượng tệp

myFile = open("myFile.txt")

print(myFile.read(11)) # Programming
print(myFile.read(10)) # languages
myFile.seek(0) # Sets file cursor to the beginning
print(myFile.read(11)) # Programming
myFile.close() 
1 với tên tệp đã cho. Hàm
myFile = open("myFile.txt", "r")
print(myFile.read(11)) # Programming
myFile.close()
8 sẵn có tạo trình xử lý tệp bằng chế độ đọc vì chúng tôi đã cung cấp cờ
myFile = open("myFile.txt")

print(myFile.read(11)) # Programming
print(myFile.read(10)) # languages
myFile.seek(0) # Sets file cursor to the beginning
print(myFile.read(11)) # Programming
myFile.close() 
3 thông qua tham số thứ hai

Đảm bảo gọi phương thức

myFile = open("myFile.txt")

print(myFile.read(11)) # Programming
print(myFile.read(10)) # languages
myFile.seek(0) # Sets file cursor to the beginning
print(myFile.read(11)) # Programming
myFile.close() 
4 để giải phóng tài nguyên sau khi sử dụng tệp. Phương thức
myFile = open("myFile.txt")

print(myFile.read(11)) # Programming
print(myFile.read(10)) # languages
myFile.seek(0) # Sets file cursor to the beginning
print(myFile.read(11)) # Programming
myFile.close() 
5 trả về nội dung tệp, vì vậy bạn sẽ thấy nội dung sau khi thực thi đoạn mã trên, như hình bên dưới

Thao tác tệp với python
Thao tác tệp với python

Phương pháp

myFile = open("myFile.txt")

print(myFile.read(11)) # Programming
print(myFile.read(10)) # languages
myFile.seek(0) # Sets file cursor to the beginning
print(myFile.read(11)) # Programming
myFile.close() 
5 đọc toàn bộ tệp cùng một lúc. Nếu bạn không muốn đọc tất cả cùng một lúc, bạn có thể chỉ định kích thước byte với tham số của phương thức
myFile = open("myFile.txt")

print(myFile.read(11)) # Programming
print(myFile.read(10)) # languages
myFile.seek(0) # Sets file cursor to the beginning
print(myFile.read(11)) # Programming
myFile.close() 
5. Ví dụ: đoạn mã sau chỉ đọc 11 byte đầu tiên

myFile = open("myFile.txt", "r")
print(myFile.read(11)) # Programming
myFile.close()

Bạn sẽ thấy từ đầu tiên (“Lập trình”) là đầu ra — vì từ đầu tiên có 11 chữ cái và kích thước của một chữ cái bằng một byte trong bảng mã ASCII. Nếu bạn in lại kết quả của

myFile = open("myFile.txt")

print(myFile.read(11)) # Programming
print(myFile.read(10)) # languages
myFile.seek(0) # Sets file cursor to the beginning
print(myFile.read(11)) # Programming
myFile.close() 
8, bạn sẽ thấy 11 byte tiếp theo (“ngôn ngữ\n”) vì con trỏ tệp đã di chuyển 11 vị trí với lệnh gọi phương thức
myFile = open("myFile.txt")

print(myFile.read(11)) # Programming
print(myFile.read(10)) # languages
myFile.seek(0) # Sets file cursor to the beginning
print(myFile.read(11)) # Programming
myFile.close() 
8 trước đó. Bạn có thể đặt lại con trỏ tệp về đầu bằng cách sử dụng phương pháp
myFile = open("myFile.txt", "r")
for line in myFile.readlines():
    print(line)
myFile.close()
0, như minh họa trong ví dụ sau

myFile = open("myFile.txt")

print(myFile.read(11)) # Programming
print(myFile.read(10)) # languages
myFile.seek(0) # Sets file cursor to the beginning
print(myFile.read(11)) # Programming
myFile.close() 

Trong hầu hết các trường hợp, thật dễ dàng để xử lý từng dòng nội dung tệp. Bạn không cần phải tự triển khai cơ chế đọc tệp theo dòng  —  Python cung cấp các tính năng sẵn có để đọc tệp theo từng dòng. Bạn có thể đọc từng dòng một tệp bằng vòng lặp

myFile = open("myFile.txt", "r")
for line in myFile.readlines():
    print(line)
myFile.close()
1 và phương pháp
myFile = open("myFile.txt", "r")
for line in myFile.readlines():
    print(line)
myFile.close()
2, như minh họa bên dưới

myFile = open("myFile.txt", "r")
for line in myFile.readlines():
    print(line)
myFile.close()

Có thể lấy số dòng hiện tại bằng vòng lặp

myFile = open("myFile.txt", "r")
for line in myFile.readlines():
    print(line)
myFile.close()
3   vì phương thức
myFile = open("myFile.txt", "r")
for line in myFile.readlines():
    print(line)
myFile.close()
2 sẽ trả về các dòng sử dụng kiểu danh sách. Đoạn mã sau sẽ in nội dung dòng với số dòng tương ứng

myFile = open("myFile.txt", "r")
for i, line in enumerate(myFile.readlines()):
    print(i, line) # line number and content
myFile.close()

Viết tệp bằng Python

Trước đó, chúng tôi đã tạo các đối tượng tệp với chế độ đọc bằng cách sử dụng cờ

myFile = open("myFile.txt")

print(myFile.read(11)) # Programming
print(myFile.read(10)) # languages
myFile.seek(0) # Sets file cursor to the beginning
print(myFile.read(11)) # Programming
myFile.close() 
3. Không thể ghi tệp ở chế độ đọc, vì vậy chúng tôi phải sử dụng chế độ ghi (
myFile = open("myFile.txt", "r")
for line in myFile.readlines():
    print(line)
myFile.close()
6) để ghi tệp


Thao tác tệp với python
Thao tác tệp với python

Hơn 200 nghìn nhà phát triển sử dụng LogRocket để tạo ra trải nghiệm kỹ thuật số tốt hơn

Thao tác tệp với python
Thao tác tệp với python
Tìm hiểu thêm →


Cũng có thể kích hoạt đồng thời cả hai chế độ đọc và ghi bằng cách sử dụng cờ

myFile = open("myFile.txt", "r")
for line in myFile.readlines():
    print(line)
myFile.close()
7 hoặc
myFile = open("myFile.txt", "r")
for line in myFile.readlines():
    print(line)
myFile.close()
8;

Để bắt đầu với việc ghi tệp, hãy nhập văn bản sau vào

myFile = open("myFile.txt", "r")
print(myFile.read(11)) # Programming
myFile.close()
9 hiện tại bằng cách viết một số mã Python

Programming languages
Rust
Ruby
TypeScript
Dart
Assembly

Sử dụng tập lệnh sau để cập nhật

myFile = open("myFile.txt", "r")
print(myFile.read(11)) # Programming
myFile.close()
9 với nội dung trên

myFile = open("myFile.txt", "w")

content = """Programming languages
Rust
Ruby
TypeScript
Dart
Assembly"""

myFile.write(content)
myFile.close()

Ở đây, chúng tôi đã xác định nội dung tệp văn bản bằng cú pháp chuỗi nhiều dòng của Python và chúng tôi đã viết nội dung vào tệp bằng phương thức

myFile = open("myFile.txt", "r")
for i, line in enumerate(myFile.readlines()):
    print(i, line) # line number and content
myFile.close()
2. Đảm bảo sử dụng chế độ ghi với cờ
myFile = open("myFile.txt", "r")
for line in myFile.readlines():
    print(line)
myFile.close()
6 — nếu không, thao tác ghi sẽ không thành công với ngoại lệ
myFile = open("myFile.txt", "r")
for i, line in enumerate(myFile.readlines()):
    print(i, line) # line number and content
myFile.close()
4

Đôi khi, chúng ta thường phải thêm nội dung mới vào một tệp hiện có. Trong những trường hợp đó, đọc và viết toàn bộ nội dung không phải là cách tiếp cận tốt do mức tiêu thụ tài nguyên cao hơn. Thay vào đó, chúng ta có thể sử dụng chế độ chắp thêm (

myFile = open("myFile.txt", "r")
for i, line in enumerate(myFile.readlines()):
    print(i, line) # line number and content
myFile.close()
5)

Nhìn vào đoạn mã sau. Nó sẽ thêm một ngôn ngữ lập trình mới vào danh sách trong

myFile = open("myFile.txt", "r")
print(myFile.read(11)) # Programming
myFile.close()
9

myFile = open("myFile.txt", "a")
myFile.write("\nBash")
myFile.close()

Đoạn mã trên thêm một ký tự dòng mới (

myFile = open("myFile.txt", "r")
for i, line in enumerate(myFile.readlines()):
    print(i, line) # line number and content
myFile.close()
7) và một từ mới vào tệp hiện có mà không ghi toàn bộ nội dung tệp. Do đó, chúng ta sẽ thấy một mục mới trong danh sách ngôn ngữ lập trình của mình. Hãy thử thêm nhiều mục hơn và xem điều gì sẽ xảy ra


Các bài viết hay khác từ LogRocket

  • Đừng bỏ lỡ một khoảnh khắc nào với The Replay, một bản tin được tuyển chọn từ LogRocket
  • Tìm hiểu cách Galileo của LogRocket loại bỏ tiếng ồn để chủ động giải quyết các sự cố trong ứng dụng của bạn
  • Sử dụng useEffect của React để tối ưu hóa hiệu suất ứng dụng của bạn
  • Chuyển đổi giữa nhiều phiên bản của Node
  • Khám phá cách tạo hoạt ảnh cho ứng dụng React của bạn với AnimXYZ
  • Khám phá Tauri, một khuôn khổ mới để xây dựng các tệp nhị phân
  • So sánh NestJS với. Thể hiện. js

Đọc thuộc tính tệp trong Python

Ngoài nội dung tệp gốc, một tệp trên đĩa sẽ chứa một số siêu dữ liệu hoặc thuộc tính tệp, bao gồm những thứ như kích thước, thời gian sửa đổi lần cuối, thời gian truy cập lần cuối, v.v.

Nhìn vào mã tệp bên dưới, hiển thị kích thước tệp, lần truy cập cuối cùng và lần sửa đổi cuối cùng

import os, time

stat = os.stat("myFile.txt")
print("Size: %s bytes" % stat.st_size)
print("Last accessed: %s" % time.ctime(stat.st_atime))
print("Last modified: %s" % time.ctime(stat.st_mtime))

Hàm

myFile = open("myFile.txt", "r")
for i, line in enumerate(myFile.readlines()):
    print(i, line) # line number and content
myFile.close()
8 trả về một đối tượng kết quả thống kê với nhiều chi tiết thuộc tính tệp. Ở đây, chúng tôi đã sử dụng
myFile = open("myFile.txt", "r")
for i, line in enumerate(myFile.readlines()):
    print(i, line) # line number and content
myFile.close()
9 để lấy kích thước tệp,
Programming languages
Rust
Ruby
TypeScript
Dart
Assembly
0 để lấy dấu thời gian được truy cập tệp cuối cùng và
Programming languages
Rust
Ruby
TypeScript
Dart
Assembly
1 để lấy dấu thời gian được sửa đổi lần cuối. Đối tượng kết quả thống kê có thể khác nhau tùy theo hệ điều hành của bạn. Ví dụ: trên hệ điều hành Windows, bạn có thể truy xuất các thuộc tính tệp dành riêng cho Windows thông qua khóa
Programming languages
Rust
Ruby
TypeScript
Dart
Assembly
2

Nếu bạn chỉ cần lấy kích thước tệp, bạn có thể sử dụng phương pháp

Programming languages
Rust
Ruby
TypeScript
Dart
Assembly
3 mà không cần truy xuất tất cả siêu dữ liệu, như được hiển thị trong đoạn mã sau

myFile = open("myFile.txt", "r") # or open("myFile.txt")
print(myFile.read())
myFile.close()
0

Tạo thư mục Python mới

Python cung cấp hàm

Programming languages
Rust
Ruby
TypeScript
Dart
Assembly
4 để tạo một thư mục. Đoạn mã sau tạo
Programming languages
Rust
Ruby
TypeScript
Dart
Assembly
5 trong thư mục làm việc hiện tại

myFile = open("myFile.txt", "r") # or open("myFile.txt")
print(myFile.read())
myFile.close()
1

Nếu bạn cố gắng tạo nhiều thư mục theo cách đệ quy với đoạn mã trên, nó sẽ thất bại. Ví dụ: bạn không thể tạo

Programming languages
Rust
Ruby
TypeScript
Dart
Assembly
6 cùng một lúc vì nó yêu cầu tạo nhiều thư mục. Trong những trường hợp đó, chức năng
Programming languages
Rust
Ruby
TypeScript
Dart
Assembly
7 sẽ giúp chúng tôi, như hình bên dưới

myFile = open("myFile.txt", "r") # or open("myFile.txt")
print(myFile.read())
myFile.close()
2

Đọc nội dung thư mục Python

Python cũng cung cấp một API dễ dàng để liệt kê nội dung thư mục thông qua hàm

Programming languages
Rust
Ruby
TypeScript
Dart
Assembly
8. Đoạn mã sau liệt kê tất cả các tệp và thư mục trong thư mục làm việc hiện tại của bạn

myFile = open("myFile.txt", "r") # or open("myFile.txt")
print(myFile.read())
myFile.close()
3

Khi bạn thực thi đoạn script trên, nó sẽ hiển thị các mục trong thư mục hiện tại của bạn, như hình bên dưới

Thao tác tệp với python
Thao tác tệp với python

Hãy thử thực thi tập lệnh từ một thư mục khác. Sau đó, nó sẽ hiển thị các mục của thư mục cụ thể đó vì chúng tôi sử dụng hàm

Programming languages
Rust
Ruby
TypeScript
Dart
Assembly
9 để lấy thư mục làm việc hiện tại

Đôi khi chúng ta cần liệt kê nội dung thư mục theo cách đệ quy. Hàm

myFile = open("myFile.txt", "w")

content = """Programming languages
Rust
Ruby
TypeScript
Dart
Assembly"""

myFile.write(content)
myFile.close()
0 giúp chúng ta liệt kê thư mục đệ quy. Đoạn mã sau liệt kê tất cả các mục của thư mục làm việc hiện tại theo cách đệ quy

myFile = open("myFile.txt", "r") # or open("myFile.txt")
print(myFile.read())
myFile.close()
4

Hàm

myFile = open("myFile.txt", "w")

content = """Programming languages
Rust
Ruby
TypeScript
Dart
Assembly"""

myFile.write(content)
myFile.close()
0 có triển khai đệ quy bên trong. Nó trả về ba giá trị cho mỗi mục

  • Nguồn gốc
  • thư mục con
  • Mục nhập tệp

Ở đây, chúng tôi đã sử dụng các biến

myFile = open("myFile.txt", "w")

content = """Programming languages
Rust
Ruby
TypeScript
Dart
Assembly"""

myFile.write(content)
myFile.close()
2,
myFile = open("myFile.txt", "w")

content = """Programming languages
Rust
Ruby
TypeScript
Dart
Assembly"""

myFile.write(content)
myFile.close()
3 và
myFile = open("myFile.txt", "w")

content = """Programming languages
Rust
Ruby
TypeScript
Dart
Assembly"""

myFile.write(content)
myFile.close()
4 tương ứng, với một vòng lặp for để nắm bắt tất cả các mục nhập

Thao tác tệp với python
Thao tác tệp với python

Xóa tệp hoặc thư mục trong Python

Chúng ta có thể sử dụng hàm

myFile = open("myFile.txt", "w")

content = """Programming languages
Rust
Ruby
TypeScript
Dart
Assembly"""

myFile.write(content)
myFile.close()
5 để xóa tệp. Có thể sử dụng hàm
myFile = open("myFile.txt", "w")

content = """Programming languages
Rust
Ruby
TypeScript
Dart
Assembly"""

myFile.write(content)
myFile.close()
6 trước
myFile = open("myFile.txt", "w")

content = """Programming languages
Rust
Ruby
TypeScript
Dart
Assembly"""

myFile.write(content)
myFile.close()
5 để ngăn chặn các trường hợp ngoại lệ. Nhìn vào đoạn mã ví dụ sau

myFile = open("myFile.txt", "r") # or open("myFile.txt")
print(myFile.read())
myFile.close()
5

Thư viện chuẩn Python cũng cung cấp hàm

myFile = open("myFile.txt", "w")

content = """Programming languages
Rust
Ruby
TypeScript
Dart
Assembly"""

myFile.write(content)
myFile.close()
8 để xóa một thư mục. Nó hoạt động tương tự như
Programming languages
Rust
Ruby
TypeScript
Dart
Assembly
4 và sẽ không xóa thư mục nếu thư mục cụ thể đó có một số mục nhập. Trước tiên, hãy thử xóa một thư mục có mã sau

myFile = open("myFile.txt", "r") # or open("myFile.txt")
print(myFile.read())
myFile.close()
6

Đoạn mã trên sẽ báo lỗi nếu

Programming languages
Rust
Ruby
TypeScript
Dart
Assembly
5 chứa các thư mục con hoặc tệp. Sử dụng đoạn mã sau để xóa một thư mục theo cách đệ quy

myFile = open("myFile.txt", "r") # or open("myFile.txt")
print(myFile.read())
myFile.close()
7

Thực hiện tìm kiếm tệp trong Python

Khi chúng tôi làm việc với các tập lệnh tự động hóa, đôi khi chúng tôi cần thực hiện tìm kiếm tệp trên đĩa. Ví dụ: các lập trình viên thường cần tìm tệp nhật ký, tệp hình ảnh và các tệp văn bản khác nhau thông qua tập lệnh Python của họ. Có một số cách tiếp cận khác nhau để thực hiện tìm kiếm tệp trong Python

  • Tìm tất cả các mục nhập bằng hàm
    Programming languages
    Rust
    Ruby
    TypeScript
    Dart
    Assembly
    
    8 và kiểm tra từng mục nhập với điều kiện
    myFile = open("myFile.txt", "a")
    myFile.write("\nBash")
    myFile.close()
    
    2 bên trong vòng lặp
    myFile = open("myFile.txt", "a")
    myFile.write("\nBash")
    myFile.close()
    
    3
  • Tìm đệ quy tất cả các mục nhập bằng hàm
    myFile = open("myFile.txt", "a")
    myFile.write("\nBash")
    myFile.close()
    
    4 và xác thực từng mục nhập bằng điều kiện
    myFile = open("myFile.txt", "a")
    myFile.write("\nBash")
    myFile.close()
    
    2 bên trong vòng lặp
    myFile = open("myFile.txt", "a")
    myFile.write("\nBash")
    myFile.close()
    
    3
  • Truy vấn tất cả các mục nhập bằng hàm
    myFile = open("myFile.txt", "a")
    myFile.write("\nBash")
    myFile.close()
    
    7 và chỉ lấy các mục nhập bạn cần

Nhìn chung, cách tiếp cận thứ ba là tốt nhất cho hầu hết các kịch bản vì nó có hỗ trợ lọc sẵn, hiệu suất rất tốt và yêu cầu mã tối thiểu từ phía nhà phát triển (thêm Pythonic). Hãy triển khai tìm kiếm tệp với mô-đun toàn cục Python

myFile = open("myFile.txt", "r") # or open("myFile.txt")
print(myFile.read())
myFile.close()
8

Đoạn mã trên liệt kê tất cả các tệp nguồn Python trong thư mục hiện tại theo cách đệ quy. Hai dấu hoa thị đầu tiên (

myFile = open("myFile.txt", "a")
myFile.write("\nBash")
myFile.close()
8) trong biến truy vấn hướng dẫn Python tìm kiếm mọi thư mục con, trong khi dấu hoa thị cuối cùng đề cập đến bất kỳ tên tệp nào

Chạy đoạn script trên. Bạn sẽ thấy các tệp nguồn Python, như hình bên dưới

Thao tác tệp với python
Thao tác tệp với python

Cố gắng tìm kiếm các loại tệp khác nhau bằng cách thay đổi biến

myFile = open("myFile.txt", "a")
myFile.write("\nBash")
myFile.close()
9

Xử lý tệp nhị phân trong Python

Trước đó, chúng tôi đã xử lý tệp văn bản. Hàm

myFile = open("myFile.txt", "r")
print(myFile.read(11)) # Programming
myFile.close()
8 sẵn có tạo các đối tượng tệp với chế độ văn bản (
import os, time

stat = os.stat("myFile.txt")
print("Size: %s bytes" % stat.st_size)
print("Last accessed: %s" % time.ctime(stat.st_atime))
print("Last modified: %s" % time.ctime(stat.st_mtime))
1) theo mặc định. Không thể xem các tệp phi văn bản như tệp hình ảnh, tệp zip và tệp video dưới dạng tệp văn bản thuần túy — vì không có tệp nhị phân câu tiếng Anh nào có thể đọc được. Do đó, chúng ta phải coi các tệp nhị phân là tệp không phải văn bản thông qua xử lý ở cấp độ byte (hoặc cấp độ bit)

Để bắt đầu với việc xử lý tệp nhị phân, hãy viết một tệp nhị phân có một số byte. Chúng tôi sẽ lưu các byte sau vào

import os, time

stat = os.stat("myFile.txt")
print("Size: %s bytes" % stat.st_size)
print("Last accessed: %s" % time.ctime(stat.st_atime))
print("Last modified: %s" % time.ctime(stat.st_mtime))
2

myFile = open("myFile.txt", "r") # or open("myFile.txt")
print(myFile.read())
myFile.close()
9

Để đơn giản, chúng ta có thể biểu diễn các byte trên bằng các giá trị thập phân sau tương ứng

myFile = open("myFile.txt", "r")
print(myFile.read(11)) # Programming
myFile.close()
0

Bây giờ, hãy thêm đoạn mã sau vào tệp nguồn Python của bạn và thực thi nó để tạo tệp nhị phân

myFile = open("myFile.txt", "r")
print(myFile.read(11)) # Programming
myFile.close()
1

Ở đây, chúng ta đã truyền một thể hiện mảng byte cho phương thức

myFile = open("myFile.txt", "r")
for i, line in enumerate(myFile.readlines()):
    print(i, line) # line number and content
myFile.close()
2 của đối tượng tệp. Ngoài ra, lưu ý rằng chúng tôi đã sử dụng chế độ nhị phân (______39_______4) để tạo đối tượng tệp. Sau khi thực hiện đoạn mã trên, hãy mở
import os, time

stat = os.stat("myFile.txt")
print("Size: %s bytes" % stat.st_size)
print("Last accessed: %s" % time.ctime(stat.st_atime))
print("Last modified: %s" % time.ctime(stat.st_mtime))
2 mới tạo bằng trình soạn thảo văn bản yêu thích của bạn. Bạn sẽ thấy kết quả sau

Thao tác tệp với python
Thao tác tệp với python

Chúng tôi đã nhận được “Python” làm đầu ra vì các byte của mảng byte đại diện cho các ký tự ASCII đã biết. Ví dụ:

import os, time

stat = os.stat("myFile.txt")
print("Size: %s bytes" % stat.st_size)
print("Last accessed: %s" % time.ctime(stat.st_atime))
print("Last modified: %s" % time.ctime(stat.st_mtime))
6 (
import os, time

stat = os.stat("myFile.txt")
print("Size: %s bytes" % stat.st_size)
print("Last accessed: %s" % time.ctime(stat.st_atime))
print("Last modified: %s" % time.ctime(stat.st_mtime))
7) đại diện cho chữ cái
import os, time

stat = os.stat("myFile.txt")
print("Size: %s bytes" % stat.st_size)
print("Last accessed: %s" % time.ctime(stat.st_atime))
print("Last modified: %s" % time.ctime(stat.st_mtime))
8 trong bảng mã ASCII. Mặc dù chúng tôi đã lưu văn bản có thể đọc được bên trong tệp nhị phân, nhưng hầu hết tất cả các tệp nhị phân đều chứa các luồng byte không thể đọc được. Hãy thử mở tệp hình ảnh qua trình soạn thảo văn bản

Bây giờ chúng ta có thể thấy thao tác đọc tệp nhị phân trong mã ví dụ sau

myFile = open("myFile.txt", "r")
print(myFile.read(11)) # Programming
myFile.close()
2

Python trả về byte bằng phương thức

myFile = open("myFile.txt")

print(myFile.read(11)) # Programming
print(myFile.read(10)) # languages
myFile.seek(0) # Sets file cursor to the beginning
print(myFile.read(11)) # Programming
myFile.close() 
5 cho chế độ nhị phân. Ở đây, chúng tôi đã chuyển đổi byte thành một thể hiện
myFile = open("myFile.txt", "r") # or open("myFile.txt")
print(myFile.read())
myFile.close()
00 bằng cách sử dụng hàm tạo
myFile = open("myFile.txt", "r") # or open("myFile.txt")
print(myFile.read())
myFile.close()
00

Tạo và giải nén từ kho lưu trữ Python

Các lập trình viên thường sử dụng các tệp lưu trữ với các ứng dụng web, dịch vụ web, ứng dụng dành cho máy tính để bàn và các chương trình tiện ích dựa trên Python để xuất hoặc nhập nhiều tệp cùng một lúc. Ví dụ: nếu bạn đang xây dựng trình quản lý tệp dựa trên web, thì bạn có thể cung cấp tính năng để người dùng tải xuống nhiều tệp cùng lúc thông qua tệp zip được tạo theo chương trình

Thư viện tiêu chuẩn Python cung cấp API xử lý tệp lưu trữ thông qua mô-đun

myFile = open("myFile.txt", "r") # or open("myFile.txt")
print(myFile.read())
myFile.close()
02. Đầu tiên, hãy tạo một kho lưu trữ với nội dung của
Programming languages
Rust
Ruby
TypeScript
Dart
Assembly
5. Nhìn vào đoạn mã sau. Đảm bảo tạo
Programming languages
Rust
Ruby
TypeScript
Dart
Assembly
5 và thêm một số tệp vào đó trước khi chạy đoạn mã

myFile = open("myFile.txt", "r")
print(myFile.read(11)) # Programming
myFile.close()
3

Bạn có thể giải nén tệp lưu trữ vào

myFile = open("myFile.txt", "r") # or open("myFile.txt")
print(myFile.read())
myFile.close()
05 bằng đoạn mã sau

myFile = open("myFile.txt", "r")
print(myFile.read(11)) # Programming
myFile.close()
4

Sao chép và di chuyển tập tin

Mô-đun

myFile = open("myFile.txt", "r") # or open("myFile.txt")
print(myFile.read())
myFile.close()
02 cũng cung cấp các chức năng API đa nền tảng để sao chép và di chuyển tệp. Nhìn vào các ví dụ sau

myFile = open("myFile.txt", "r")
print(myFile.read(11)) # Programming
myFile.close()
5

Các phương pháp hay nhất về xử lý tệp Python

Các lập trình viên tuân theo các thực hành mã hóa khác nhau. Tương tự, các lập trình viên Python cũng tuân theo các cách viết mã khác nhau khi họ xử lý các tệp

Ví dụ: một số lập trình viên sử dụng khối thử cuối cùng và đóng trình xử lý tệp theo cách thủ công. Một số lập trình viên cho phép trình thu gom rác đóng trình xử lý tệp bằng cách bỏ qua lệnh gọi phương thức

myFile = open("myFile.txt")

print(myFile.read(11)) # Programming
print(myFile.read(10)) # languages
myFile.seek(0) # Sets file cursor to the beginning
print(myFile.read(11)) # Programming
myFile.close() 
4 — đây không phải là một cách làm tốt. Trong khi đó, các lập trình viên khác sử dụng cú pháp
myFile = open("myFile.txt", "r") # or open("myFile.txt")
print(myFile.read())
myFile.close()
08 để làm việc với các trình xử lý tệp

Trong phần này, tôi sẽ tóm tắt một số phương pháp hay nhất để xử lý tệp trong Python. Trước tiên, hãy xem đoạn mã sau tuân theo các phương pháp hay nhất về xử lý tệp

myFile = open("myFile.txt", "r")
print(myFile.read(11)) # Programming
myFile.close()
6

Ở đây, chúng tôi đã sử dụng từ khóa

myFile = open("myFile.txt", "r") # or open("myFile.txt")
print(myFile.read())
myFile.close()
08 để đóng hoàn toàn trình xử lý tệp. Ngoài ra, chúng tôi xử lý các trường hợp ngoại lệ có thể xảy ra bằng khối thử ngoại trừ. Trong khi bạn đang làm việc với việc xử lý tệp Python, có thể chắc chắn rằng mã của bạn có các điểm sau

  • Không bao giờ bỏ qua các ngoại lệ   —  đặc biệt là với các quy trình Python chạy dài. Tuy nhiên, bạn có thể bỏ qua các ngoại lệ đối với các tập lệnh tiện ích đơn giản vì các ngoại lệ chưa được xử lý sẽ ngăn các tập lệnh tiện ích tiếp tục
  • Nếu bạn không sử dụng cú pháp
    myFile = open("myFile.txt", "r") # or open("myFile.txt")
    print(myFile.read())
    myFile.close()
    
    08, hãy đảm bảo đóng các trình xử lý tệp đã mở đúng cách. Trình thu gom rác của Python sẽ dọn sạch các trình xử lý tệp chưa được đóng, nhưng tốt nhất là đóng một trình xử lý tệp thông qua mã của chúng tôi để tránh sử dụng tài nguyên không mong muốn
  • Đảm bảo thống nhất các cú pháp xử lý tệp trong cơ sở mã của bạn. Ví dụ: nếu bạn sử dụng từ khóa
    myFile = open("myFile.txt", "r") # or open("myFile.txt")
    print(myFile.read())
    myFile.close()
    
    08 để xử lý tệp, hãy đảm bảo sử dụng cùng một cú pháp cho tất cả những nơi bạn đang xử lý tệp
  • Tránh mở lại cùng một tệp khi bạn đọc hoặc ghi bằng nhiều trình xử lý. Thay vào đó, hãy sử dụng các phương pháp
    myFile = open("myFile.txt", "r") # or open("myFile.txt")
    print(myFile.read())
    myFile.close()
    
    12 và
    myFile = open("myFile.txt", "r")
    for line in myFile.readlines():
        print(line)
    myFile.close()
    
    0, như hình bên dưới
myFile = open("myFile.txt", "r")
print(myFile.read(11)) # Programming
myFile.close()
7

Nội dung trên lưu một chuỗi vào tệp đầu tiên. Sau đó, nó đọc lại nội dung mới được thêm vào bằng cách đặt lại bộ đệm bên trong. Phương thức

myFile = open("myFile.txt", "r") # or open("myFile.txt")
print(myFile.read())
myFile.close()
12 xóa dữ liệu được lưu tạm thời trong bộ nhớ, vì vậy lần đọc tiếp theo sẽ trả về nội dung mới được thêm vào. Ngoài ra, chúng ta cần sử dụng lệnh gọi phương thức
myFile = open("myFile.txt", "r") # or open("myFile.txt")
print(myFile.read())
myFile.close()
15 để đặt lại con trỏ về đầu vì phương thức
myFile = open("myFile.txt", "r")
for i, line in enumerate(myFile.readlines()):
    print(i, line) # line number and content
myFile.close()
2 đặt nó về cuối

Phần kết luận

Python cung cấp một cú pháp đơn giản cho các lập trình viên. Vì vậy, hầu hết các thao tác với tệp đều dễ dàng thực hiện. Tuy nhiên, Python có một số vấn đề với thiết kế thư viện tiêu chuẩn, do đó, có nhiều hàm API cho cùng một thứ. Do đó, bạn phải chọn mô-đun tiêu chuẩn phù hợp nhất theo yêu cầu của bạn

Ngoài ra, Python là một ngôn ngữ chậm so với các ngôn ngữ lập trình phổ biến khác. Với suy nghĩ này, hãy đảm bảo tối ưu hóa tập lệnh Python của bạn mà không sử dụng quá nhiều tài nguyên. Ví dụ: bạn có thể tối ưu hóa hiệu suất bằng cách xử lý từng dòng tệp văn bản lớn mà không cần xử lý toàn bộ nội dung cùng một lúc

Trong hướng dẫn này, chúng tôi đã thảo luận về xử lý tệp văn bản chung và xử lý tệp nhị phân. Nếu bạn cần xử lý các định dạng tệp cụ thể, bạn nên chọn một thư viện hoặc mô-đun chuẩn tốt hơn. Ví dụ: bạn có thể sử dụng mô-đun chuẩn csv để xử lý tệp CSV và thư viện PyPDF2 để xử lý tệp PDF. Ngoài ra, mô-đun chuẩn pickle giúp bạn lưu trữ (và tải) các đối tượng dữ liệu Python bằng các tệp

Python có tốt cho thao tác tệp không?

Tệp Python chứa dữ liệu được lưu trữ trong thiết bị lưu trữ máy tính và Python cung cấp các cách dễ dàng để thao tác với các tệp được lưu trữ này .

Đối tượng nào được sử dụng để thao tác với tệp trong Python?

Tệp trong Python có thể được thao tác với lớp tệp . Các tệp có một “chế độ” được liên kết.