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 đó
Dung dịch
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
findude
Chưa bị nổ tung
Bài viết. 64
Chủ đề. 26
Đã tham gia. Tháng 3 năm 2020
Danh tiếng. 0
#1
23-04-2020, 11. 39 giờ sángXin chào,
Tôi đang sử dụng mã này để tạo tệp có tên người dùng làm tiêu đề và mật khẩu bên trong tệp.
user_details = open[new_username_1 + ".txt","w"] #creates a new file called "username".txt user_details.write[new_password_1] #writes in the file what the users password is user_details.close[] #saves and closes the filelàm thế nào tôi có được thứ này để lưu vào một thư mục cụ thể mà tôi đã tạo
atm nó lưu vào.
E. \Work\School\Computer Science\Python\Code
Tôi muốn nó lưu vào.
E. \Work\School\Computer Science\Python\Code\User Info
xin cảm ơn
Đáp lại
Tìm thấy
Đáp lại
anbu23
Bánh xốp mỏng
Bài viết. 95
Chủ đề. 0
Đã tham gia. Tháng 4 năm 2020
Danh tiếng. 19
#2
23-04-2020, 11. 56 giờ sánguser_details = open['E:\Work\School\Computer Science\Python\Code\User Info\' + new_username_1 + ".txt","w"]
Đáp lại
Tìm thấy
Đáp lại
findude
Chưa bị nổ tung
Bài viết. 64
Chủ đề. 26
Đã tham gia. Tháng 3 năm 2020
Danh tiếng. 0
#3
23-04-2020, 12. 17 giờ chiềucổ vũ người bạn đời
Đáp lại
Tìm thấy
Đáp lại
quả óc chó
Bài viết. 7,816
Chủ đề. 145
Đã tham gia. Tháng 9 năm 2016
Danh tiếng. 571
#4
23-04-2020, 12. 24 giờ chiềuthật kỳ lạ khi sử dụng dấu gạch chéo ngược đơn [không thoát, không phải trong chuỗi thô] không gây ra lỗi cho bạn đối với e. g.
user_details = open['E:\Work\School\Computer Science\Python\Code\User Info\' + new_username_1 + ".txt","w"]0 một phần của con đường.
______9'\u' là một trong những chuỗi thoát.
Nếu bạn không thể giải thích điều đó cho một đứa trẻ sáu tuổi, thì chính bạn cũng không hiểu , Albert Einstein
Cách đặt câu hỏi . liên kết và một liên kết khác
Tạo ví dụ về MCV
Gỡ lỗi các chương trình nhỏ
Đáp lại
Tìm thấy
Đáp lại
findude
Chưa bị nổ tung
Bài viết. 64
Chủ đề. 26
Đã tham gia. Tháng 3 năm 2020
Danh tiếng. 0
#5
23-04-2020, 12. 35 PM [Bài đăng này đã được sửa đổi lần cuối. 23-04-2020, 12. 36 PM bởi findndude. ]khi tôi đặt mã của bạn vào, toàn bộ nội dung vẫn ở dạng chuỗi, đây có phải là mã của nó không?
nó báo lỗi cho tôi
[error
EOL while scanning literal
[/error]
Đáp lại
Tìm thấy
Đáp lại
quả óc chó
Bài viết. 7,816
Chủ đề. 145
Đã tham gia. Tháng 9 năm 2016
Danh tiếng. 571
#6
23-04-2020, 12. 43 PM [Bài đăng này đã được sửa đổi lần cuối. 23-04-2020, 12. 43 PM bởi buran. ]khi làm việc với các đường dẫn trong Windows nơi dấu phân cách là dấu gạch chéo ngược [thông thường], bạn có ba lựa chọn thay thế.
thoát dấu gạch chéo ngược.
_______10sử dụng chuỗi thô
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."]
1hoặc sử dụng dấu gạch chéo lên phía trướcfrom 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."]
2sử dụng dấu gạch chéo ngược đơn lẻ sẽ gây ra lỗi nếu dấu gạch chéo ngược được theo sau bởi một số ký tự nhất định kết hợp với nhau . Trong trường hợp của bạn, user_details = open['E:\Work\School\Computer Science\Python\Code\User Info\' + new_username_1 + ".txt","w"]1 là sự kết hợp như vậy.
Nếu bạn không thể giải thích điều đó cho một đứa trẻ sáu tuổi, thì chính bạn cũng không hiểu , Albert Einstein
Cách đặt câu hỏi . liên kết và một liên kết khác
Tạo ví dụ về MCV
Gỡ lỗi các chương trình nhỏ
Đáp lại
Tìm thấy
Đáp lại
findude
Chưa bị nổ tung
Bài viết. 64
Chủ đề. 26
Đã tham gia. Tháng 3 năm 2020
Danh tiếng. 0
#7
23-04-2020, 12. 43 PM [Bài đăng này đã được sửa đổi lần cuối. 23-04-2020, 12. 54 PM bởi findndude. ]cảm ơn, tôi sẽ thử nó với một dấu gạch chéo lên trước
tôi sẽ triển khai ti này như thế nào khi kiểm tra đường dẫn e. g
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."]
4Tôi muốn kiểm tra thư mục thông tin người dùngđồng thời tôi sẽ triển khai nó bằng cách xóa hệ điều hành như thế nào.
____15lại trong thư mục thông tin người dùng
"Chỉ những người nhàm chán mới chán"
Đáp lại
Tìm thấy
Đáp lại
findude
Chưa bị nổ tung
Bài viết. 64
Chủ đề. 26
Đã tham gia. Tháng 3 năm 2020
Danh tiếng. 0
#số 8
23-04-2020, 01. 56 CHtôi có các đoạn mã này ở đây.
______16and
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."]
7Tôi muốn kiểm tra đường dẫn tệp 'E. /Work/School/Computer Science/Python/Code/User Info/' [Tôi đã sử dụng dấu gạch chéo lên]Tôi đang kiểm tra xem liệu nó có tồn tại trong đoạn mã đầu tiên hay không
in the second bit, I want to delete the file from the path that I looked in previously [E:/Work/School/Computer Science/Python/Code/User Info/]
cảm ơn
"Chỉ những người nhàm chán mới chán"
Đáp lại
Tìm thấy
Đáp lại
quả óc chó
Bài viết. 7,816
Chủ đề. 145
Đã tham gia. Tháng 9 năm 2016
Danh tiếng. 571
#9
23-04-2020, 02. 00 giờ chiềunhững gì bạn đề xuất dễ dẫn đến tình trạng tranh đua - tôi. e. tệp có thể tồn tại khi bạn thực hiện kiểm tra và sau đó bị xóa bởi một quy trình khác giữa kiểm tra và nỗ lực xóa tệp của bạn.
vì vậy, không cần kiểm tra, hãy bọc mã xóa tệp trong thử/ngoại trừ và phát hiện lỗi nếu tệp không tồn tại ngay từ đầu
Nếu bạn không thể giải thích điều đó cho một đứa trẻ sáu tuổi, thì chính bạn cũng không hiểu , Albert Einstein
Cách đặt câu hỏi . liên kết và một liên kết khác
Tạo ví dụ về MCV
Gỡ lỗi các chương trình nhỏ
Đáp lại
Tìm thấy
Đáp lại
findude
Chưa bị nổ tung
Bài viết. 64
Chủ đề. 26
Đã tham gia. Tháng 3 năm 2020
Danh tiếng. 0
#10
23-04-2020, 02. 17 giờ chiềutôi không hiểu không có gì khác để xóa nó chỉ có mã đó.
mã để xóa một tệp khỏi E là gì. /Công việc/Trường học/Khoa học máy tính/Python/Mã/Thông tin người dùng/
"Chỉ những người nhàm chán mới chán"
Đáp lại
Tìm thấy
Đáp lại