Xuất Python ra tệp văn bản

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

Hàm print[] của Python thường được sử dụng để hiển thị văn bản trong dòng lệnh hoặc trong trình thông dịch tương tác, tùy thuộc vào cách chương trình Python được thực thi. Tuy nhiên, chúng ta có thể thay đổi hành vi của nó để ghi văn bản vào tệp thay vì vào bảng điều khiển

Trong bài viết này, chúng ta sẽ xem xét nhiều cách chúng ta có thể ghi vào tệp bằng hàm print[]

Chuyển hướng đầu ra tập lệnh của Python trong Terminal

Cách nhanh chóng và bẩn thỉu để chuyển hướng đầu ra của tập lệnh Python là trực tiếp từ dòng lệnh trong khi thực thi tập lệnh

Ví dụ: nếu chúng tôi có tệp Python có tên là

Hallo
1 với nội dung sau

Chúng ta có thể chuyển hướng đầu ra của tệp trong trình bao bằng cách sử dụng một dấu ngoặc đơn bên phải

$ python3 hello.py > output.txt

Nếu chúng tôi mở

Hallo
2 mới tạo của mình, chúng tôi sẽ thấy các nội dung sau

Hallo

Tuy nhiên, với phương pháp này, tất cả đầu ra của tập lệnh được ghi vào một tệp. Việc thực hiện chuyển hướng này từ bên trong tập lệnh Python thường linh hoạt hơn

Chuyển hướng luồng đầu ra tiêu chuẩn

Trong Python, hàm print[] linh hoạt hơn bạn nghĩ. Nó không được mã hóa cứng theo cách chỉ có thể ghi văn bản được chỉ định vào màn hình. Thay vào đó, nó sẽ gửi văn bản đến một vị trí được gọi là luồng đầu ra tiêu chuẩn, còn được gọi là

Hallo
4

Tất cả các hệ thống UNIX có ba đường ống chính - đường ống đầu vào tiêu chuẩn [

Hallo
5], đường ống đầu ra tiêu chuẩn [
Hallo
4] và đường ống lỗi tiêu chuẩn [
Hallo
7]

Theo mặc định, đường ống đầu ra tiêu chuẩn trỏ đến cửa sổ tương tác được sử dụng để thực thi chương trình, vì vậy chúng ta thường thấy văn bản được in ra trên màn hình. Tuy nhiên, đầu ra tiêu chuẩn có thể được chuyển hướng đến các vị trí khác, chẳng hạn như tệp, để thuận tiện

Nếu đầu ra tiêu chuẩn được chuyển hướng đến một tệp cụ thể, văn bản được chỉ định trong hàm print[] sẽ được ghi vào tệp đó thay vì được hiển thị trên màn hình

Trong Python, có thể lấy tham chiếu đến đầu ra tiêu chuẩn bằng cách sử dụng đối tượng

Hallo
4 của mô-đun
$ python3 printToFile.py
0. Nó là một đối tượng giống như tệp, nghĩa là nó có các phương thức cho phép Python đọc và ghi từ nó giống như một tệp thực tế

Hãy xem một ví dụ nơi chúng tôi thay đổi

Hallo
4 thành một tệp

Hàm print[] nhận đối số chuỗi được cung cấp, nối một ký tự xuống dòng vào cuối và gọi phương thức

$ python3 printToFile.py
3 để ghi nó vào đầu ra tiêu chuẩn

Trong ví dụ trên, đầu tiên chúng ta in một dòng văn bản như chúng ta đã quen, dòng này sẽ được hiển thị trong bảng điều khiển khi chúng ta chạy tệp. Sau đó, chúng tôi đã gán lại

Hallo
4 cho đối tượng tệp tùy chỉnh của mình -
$ python3 printToFile.py
5. Vì đối tượng tệp có phương thức
$ python3 printToFile.py
6 hoàn toàn hợp lệ, nên giá trị in của chúng tôi được ghi vào tệp mà không gặp sự cố

Lưu ý rằng nên lưu trữ giá trị ban đầu của đầu ra tiêu chuẩn trong một biến trước khi thay đổi nó. Bằng cách này, chúng tôi có thể đặt lại đầu ra tiêu chuẩn về giá trị ban đầu sau khi hoàn tất, điều này có thể giúp tránh nhầm lẫn

Hãy lưu mã vào một tệp mới,

$ python3 printToFile.py
7. Và sau đó, hãy thực hiện nó

$ python3 printToFile.py

Chúng ta sẽ thấy đầu ra sau trong Terminal

This message will be displayed on the screen.

Và script sẽ tạo một file mới có tên là

$ python3 printToFile.py
8 với nội dung như sau

Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó

This message will be written to a file.

Bạn đã chuyển hướng thành công dữ liệu từ luồng đầu ra tiêu chuẩn sang một tệp. Hãy xem cách chúng ta có thể làm điều này với một đối tượng giống như tệp phổ biến khác dành riêng cho các lỗi lập trình

Chuyển hướng luồng lỗi tiêu chuẩn

Trong Python, các lỗi được ghi vào luồng lỗi tiêu chuẩn, còn được gọi là

Hallo
7. Điều này cũng mặc định cho cửa sổ tương tác nhưng có thể thay đổi thông qua đối tượng
This message will be displayed on the screen.
0. Nếu chúng tôi muốn in các giá trị tới
Hallo
7, chúng tôi chỉ cần chuyển hướng
This message will be displayed on the screen.
2 để trỏ tới
This message will be displayed on the screen.
0

Tạo một tệp có tên

This message will be displayed on the screen.
4 và thêm đoạn mã sau

Ví dụ này gần giống với ví dụ trước, ngoại trừ việc thay vì chuyển hướng luồng đầu ra tiêu chuẩn tới một tệp, chúng tôi chuyển hướng nó tới luồng lỗi tiêu chuẩn. Nếu luồng lỗi tiêu chuẩn cũng được chuyển hướng đến một nơi khác, đầu ra sẽ được gửi đến vị trí đó thay vì màn hình

Hãy chạy tập tin này

$ python3 printToStderr.py

đầu ra của chúng tôi sẽ hiển thị

This message will be displayed via standard output.
This message will be displayed via the standard error.

Mặc dù nó có thể xuất hiện giống như đầu ra thông thường đối với chúng tôi, nhưng đối với máy tính, nó được hiển thị thông qua các đường ống khác nhau

In Sử dụng Tham số "tệp"

Trong các ví dụ trước, chúng tôi đã chuyển hướng rõ ràng đầu ra tiêu chuẩn sang một đối tượng giống như tệp khác bằng cách thay đổi đối tượng

Hallo
4. Tuy nhiên, để thuận tiện, chúng ta có thể thực hiện việc này trực tiếp từ bên trong hàm print[] bằng cách chỉ định vị trí đầu ra với tham số
This message will be displayed on the screen.
7

Ví dụ: nếu chúng tôi muốn in trực tiếp vào một tệp mà không thay đổi toàn bộ tập lệnh

Hallo
4, chúng tôi sẽ viết

import sys

print['This message will be displayed on the screen.']

with open['filename.txt', 'w'] as f:
    print['This message will be written to a file.', file=f]

Vì chúng tôi không loay hoay với việc chuyển hướng đầu ra tiêu chuẩn một cách rõ ràng, nên chúng tôi không còn phải đặt lại nó về giá trị ban đầu. Do đó, đây là cách ưa thích để ghi vào tệp có hàm print[]

Ghi chú. Mặc dù tên của tham số là

This message will be displayed on the screen.
7, hãy nhớ rằng nó hoạt động với mọi đối tượng giống như tệp. Ví dụ, nếu bạn muốn in thành
Hallo
7, bạn sẽ thay đổi câu lệnh print[] thành

print['This message will be written to stderr.', file=sys.stderr]

Phần kết luận

Trong bài viết này, chúng ta đã thảo luận về việc chuyển hướng đầu ra hàm print[] của Python bằng nhiều phương pháp khác nhau. Các phương pháp này bao gồm chuyển hướng đầu ra của tập lệnh Python từ dòng lệnh, chuyển hướng đầu ra tiêu chuẩn trong tập lệnh Python và chỉ định một đối tượng giống như tệp trong tham số

This message will be displayed on the screen.
7 trực tiếp trong hàm print[]

Bài viết này được viết bởi Jacob Stopak, một nhà phát triển phần mềm và nhà tư vấn với niềm đam mê giúp đỡ người khác cải thiện cuộc sống của họ thông qua mã. Jacob là tác giả của Coding Essentials Guidebook for Developers, một cuốn sách giới thiệu bao gồm các khái niệm và công cụ mã hóa thiết yếu. Nó chứa các chương về kiến ​​trúc máy tính cơ bản, Internet, Dòng lệnh, HTML, CSS, JavaScript, Python, Java, cơ sở dữ liệu/SQL, Git, v.v.

Python có thể ghi vào tệp văn bản không?

Python cung cấp các chức năng sẵn có để tạo, ghi và đọc tệp . Có hai loại tệp có thể được xử lý trong python, tệp văn bản bình thường và tệp nhị phân [được viết bằng ngôn ngữ nhị phân, 0 và 1].

Làm cách nào để tạo txt trong Python?

Python tạo tệp văn bản .
'w' – mở tệp để viết. Nếu tệp không tồn tại, hàm open[] sẽ tạo một tệp mới. Nếu không, nó sẽ ghi đè lên nội dung của tệp hiện có
'x' – mở tệp để tạo độc quyền. Nếu tệp tồn tại, hàm open[] sẽ báo lỗi [ FileExistsError ]

Làm cách nào để lưu đầu ra dấu nhắc lệnh vào tệp văn bản trong Python?

Để lưu đầu ra lệnh vào tệp văn bản bằng Dấu nhắc Lệnh, hãy làm theo các bước sau. .
Mở bắt đầu
Tìm kiếm Dấu nhắc Lệnh
Bấm chuột phải vào kết quả trên cùng và chọn tùy chọn Chạy với tư cách quản trị viên
Nhập lệnh sau để lưu đầu ra vào tệp văn bản và nhấn Enter. LỆNH CỦA BẠN > C. \PATH\TO\FOLDER\OUTPUT. txt

Chủ Đề