Một tác vụ tự động hóa rất phổ biến mà chúng tôi giải quyết bằng Python là tạo các tệp văn bản cũng như đọc, ghi và lưu dữ liệu vào các tệp đó
Giải pháp
Python cung cấp các hàm tích hợp rất mạnh mẽ để tạo và thao tác với các tệp văn bản. Trong hướng dẫn ngắn này, chúng ta sẽ đi qua một số khả năng chính
- Tạo một tệp văn bản mới từ đầu trong thư mục hiện tại
- Tạo một tệp văn bản mới trong một thư mục khác
- Thêm văn bản vào tệp văn bản hiện có
- Viết từng dòng văn bản vào một tệp
Hãy xem xét một vài ví dụ
Tạo một tệp bằng Python với open
Để tạo tệp văn bản trong Python, chúng tôi thường sử dụng khối With và hàm open[“filename”, “accessmode”]. Đoạn mã dưới đây sẽ tạo một tệp có tên 'mydocument. txt’ với quyền truy cập ghi. Tệp này sẽ được tạo trong thư mục lưu tập lệnh Python của bạn
Mã số
with open["mydocument.txt", mode = "w"] as f:
f.write["This text is written with Python"]
Ghi chú. khi mở tệp ở chế độ Ghi ['w'], nội dung tệp hiện tại sẽ bị cắt bớt. Sử dụng chế độ này cẩn thận
Tạo một tệp trong một đường dẫn thư mục khác
Để tạo một tệp theo một đường dẫn khác với thư mục làm việc của chúng tôi, chúng tôi sẽ phải thực hiện một thay đổi nhỏ trong cách chúng tôi gọi hàm mở
Trước tiên, chúng tôi sẽ đảm bảo rằng đường dẫn thư mục tệp có sẵn trong hệ điều hành của bạn. Sau đó, chúng tôi sẽ sử dụng ngữ cảnh With để mở tệp ở chế độ truy cập Ghi và nối một chuỗi vào tệp. Hãy xem đoạn trích – Lưu ý cách sử dụng thư viện pathlib [có sẵn từ Python 3. 4] giúp đơn giản hóa việc xử lý đối tượng tệp trong Python
Mã số
from pathlib import Path
# replace with your preferred directory path
dir_path = Path['C:\Temp']
file_name = "mydocument.txt"
file_path = dir_path.joinpath[file_name]
# check that directory exists
if dir_path.is_dir[]:
with open[file_path, "w"] as f:
f.write["This text is written with Python."]
print['File was created.']
else:
print["Directory doesn\'t exist."]
Một triển khai tương tự bằng cách sử dụng mô-đun os thư viện tiêu chuẩn Python [cũng có sẵn trước Python 3. 4]
import os
# replace with your preferred directory and file path
dir_path = r"C:\Temp"
file_name = "mydocument.txt"
file_path = os.path.join[dir_path, file_name]
# check if the directory exists
if os.path.exists [dir_path]:
# create the file
with open[file_path, "w"] as f:
f.write["This text is written with Python."]
print['File was created.']
else:
print["Directory doesn\'t exist."]
Tạo tệp nếu không tồn tại với Python
Dưới đây là phiên bản mã mạnh mẽ hơn một chút, trong đó trước tiên chúng tôi sẽ kiểm tra xem đường dẫn thư mục và tệp có tồn tại hay không trước khi đọc và ghi vào tệp
from pathlib import Path
dir_path = Path['C:\Temp']
file_name = 'mydocument.txt'
file_path = dir_path.joinpath[file_name]
# check if directory exists
if dir_path.is_dir[]:
# check if file already exists
if file_path.is_file[]:
print['File already exists.']
else:
with open [dir_path.joinpath[file_name],'w'] as f:
f.write["This text is written with Python."]
print['File was created.']
else:
print['Directory doesn\'t exist, please create the directory first.']
Nối văn bản vào một tệp hiện có
Như đã đề cập trước đó, các tệp chúng tôi đã tạo bằng “w” làm chế độ truy cập sẽ ghi đè lên tất cả nội dung tệp hiện có. Do đó, chúng tôi thường mở tệp ở chế độ chắp thêm [“a”]. Nối thêm sẽ chèn văn bản của bạn sau nội dung hiện có của tệp văn bản của bạn. Hãy xem nhanh
Mã số
#write and save
with open[r"C:\Temp\mydocument.txt", "w"] as f:
f.write["This text is written with Python."]
#read
with open[r"C:\Temp\mydocument.txt", "r"] as f:
print["New text:\n",f.read[]]
#append
with open[r"C:\Temp\mydocument.txt", "a"] as f:
f.write["\n This text was added using Append."]
#read the appended text
with open[r"C:\Temp\mydocument.txt", "r"] as f:
print["Append:\n",f.read[]]
đầu ra
New text:
This text is written with Python.
Append:
This text is written with Python.
This text was added using Append.
Viết từng dòng tệp Python
Bây giờ, hãy giả sử rằng bạn có một danh sách Python mà bạn muốn ghi vào tệp theo từng dòng
Phương thức writelines[] của đối tượng tệp mong đợi một lần lặp [chẳng hạn như danh sách của chúng tôi]. Tuy nhiên, khi được gọi writelines[] sẽ nối các phần tử danh sách và ghi chúng vào tệp. Nếu bạn cần viết từng dòng một, bạn có thể lặp qua các thành phần danh sách, nối thêm ký tự thoát \n cho từng thành phần và ghi chúng vào tệp như minh họa trong đoạn trích bên dưới
Xử lý tệp là một khái niệm rất quan trọng đối với bất kỳ lập trình viên nào. Nó có thể được sử dụng để tạo, xóa, di chuyển tệp hoặc lưu trữ dữ liệu ứng dụng, cấu hình người dùng, video, hình ảnh, v.v. Python cũng hỗ trợ xử lý tệp và cho phép người dùng xử lý tệp i. e. , để đọc và ghi tệp, cùng với nhiều tùy chọn xử lý tệp khác, để thao tác trên tệp
Tham khảo các bài viết sau để kiểm tra kiến thức cơ bản về xử lý tệp
- Khái niệm cơ bản về xử lý tệp
- Đọc và ghi vào một tập tin
Tạo một tập tin trống
Xử lý tệp cũng có thể được sử dụng để tạo tệp. Ngay cả tệp có phần mở rộng khác nhau như .pdf
, .txt
, .jpeg
cũng có thể được tạo bằng xử lý tệp trong Python. Để tạo một tệp, tệp phải được mở để ghi. Để mở tệp để ghi chế độ truy cập của tệp phải là w, a, w+, a+. Chế độ truy cập chi phối loại hoạt động có thể có trong tệp đã mở. Nó đề cập đến cách tệp sẽ được sử dụng sau khi được mở. Dưới đây là danh sách các chế độ truy cập để tạo một tệp trống
- Chỉ ghi ['w']. Mở tệp để ghi. Đối với một tệp hiện có, dữ liệu bị cắt bớt và ghi đè
- Viết và Đọc ['w+']. Mở tệp để đọc và ghi. Đối với một tệp hiện có, dữ liệu bị cắt bớt và ghi đè
- Chỉ nối thêm ['a']. Mở tệp để ghi. Dữ liệu được ghi sẽ được chèn vào cuối, sau dữ liệu hiện có
- Nối và Đọc ['a+']. Mở tệp để đọc và ghi. Dữ liệu được ghi sẽ được chèn vào cuối, sau dữ liệu hiện có
Ghi chú. Tệp được tạo trong cùng thư mục của tập lệnh nếu không có đường dẫn nào được chỉ định
Ví dụ 1. Trong ví dụ này, chúng tôi sẽ tạo một tệp mới myfile. txt. Để xác minh điều này, chúng tôi sẽ sử dụng phương thức os.listdir[]
của mô-đun os để liệt kê các thư mục trước và sau khi tạo một tệp mới
# Python program to demonstrate
# creating a new file
List of directories and files before creation: ['test_nikhil.txt'] List of directories and files after creation: ['myfile.txt', 'test_nikhil.txt']0
List of directories and files before creation: ['test_nikhil.txt'] List of directories and files after creation: ['myfile.txt', 'test_nikhil.txt']1
List of directories and files before creation: ['test_nikhil.txt'] List of directories and files after creation: ['myfile.txt', 'test_nikhil.txt']2
List of directories and files before creation: ['test_nikhil.txt'] List of directories and files after creation: ['myfile.txt', 'test_nikhil.txt']4
List of directories and files before creation: ['test_nikhil.txt'] List of directories and files after creation: ['myfile.txt', 'test_nikhil.txt']5
List of directories and files before creation: ['test_nikhil.txt'] List of directories and files after creation: ['myfile.txt', 'test_nikhil.txt']6
List of directories and files before creation: ['test_nikhil.txt'] List of directories and files after creation: ['myfile.txt', 'test_nikhil.txt']7
List of directories and files before creation: ['test_nikhil.txt'] List of directories and files after creation: ['myfile.txt', 'test_nikhil.txt']9
.pdf
0_______6_______6 .pdf
2
.pdf
3.pdf
4.pdf
5.pdf
6
.pdf
3.pdf
8
.pdf
3.txt
0
.txt
2
.txt
3.txt
4.pdf
4.txt
6.txt
7.txt
8.txt
9
.jpeg
0.jpeg
1
.jpeg
0.jpeg
3
.jpeg
0.jpeg
5
.jpeg
7
.pdf
0_______6_______6 os.listdir[]
0
.pdf
3.pdf
4os.listdir[]
3.pdf
6
.pdf
3.pdf
8
đầu ra
List of directories and files before creation: ['.idea', 'gfg.py', 'venv'] List of directories and files after creation: ['.idea', 'gfg.py', 'myfile.txt', 'venv']
# Ví dụ 2. Tạo một tệp mới tại một vị trí đã chỉ định. Để tạo tệp tại một vị trí đã chỉ định, mô-đun os được sử dụng. Dưới đây là việc thực hiện