Hướng dẫn how do you save the output of a command to a file in python? - làm cách nào để lưu đầu ra của một lệnh vào một tệp trong python?

Tôi đang viết một tập lệnh để dọn dẹp máy tính để bàn của mình, di chuyển các tệp dựa trên loại tệp. Bước đầu tiên, dường như, là

os.system['ls /Users/user/Desktop > out.txt']
5 [tôi đang ở trên Mac OSX]. Vì vậy, bằng cách sử dụng Python, làm thế nào tôi sẽ chạy một lệnh, sau đó viết đầu ra vào một tệp trong một thư mục cụ thể? Vì điều này sẽ không có giấy tờ và tôi sẽ là người dùng duy nhất, tôi không phiền [thích hơn?] Nếu nó sử dụng
os.system['ls /Users/user/Desktop > out.txt']
6.

Bjorn Pollex

73.7K28 Huy hiệu vàng193 Huy hiệu bạc278 Huy hiệu đồng28 gold badges193 silver badges278 bronze badges

hỏi ngày 25 tháng 1 năm 2012 lúc 13:30Jan 25, 2012 at 13:30

5

Bạn có thể chuyển hướng đầu ra tiêu chuẩn đến bất kỳ tệp nào bằng lệnh

os.system['ls /Users/user/Desktop > out.txt']
7 trong lệnh.

$ ls /Users/user/Desktop > out.txt

Sử dụng python,

os.system['ls /Users/user/Desktop > out.txt']

Tuy nhiên, nếu bạn đang sử dụng Python thì thay vì sử dụng lệnh

os.system['ls /Users/user/Desktop > out.txt']
8, bạn có thể sử dụng
os.system['ls /Users/user/Desktop > out.txt']
9 để liệt kê tất cả các tệp trong thư mục.

path = '/Users/user/Desktop'
files = os.listdir[path]
print files

Đã trả lời ngày 25 tháng 1 năm 2012 lúc 13:37Jan 25, 2012 at 13:37

Taskinoortaskinoortaskinoor

45K12 Huy hiệu vàng116 Huy hiệu bạc139 Huy hiệu đồng12 gold badges116 silver badges139 bronze badges

2

Sau khi lướt qua tài liệu Python để chạy lệnh shell và lấy đầu ra, bạn có thể sử dụng mô -đun phụ bằng phương pháp

path = '/Users/user/Desktop'
files = os.listdir[path]
print files
0.

Sau đó, bạn có thể viết đơn giản đầu ra đó vào một tệp với các hàm Python IO tiêu chuẩn: Tệp IO trong Python.

Đã trả lời ngày 25 tháng 1 năm 2012 lúc 13:39Jan 25, 2012 at 13:39

BergmannfbergmannfBergmannF

9.4072 Huy hiệu vàng35 Huy hiệu bạc37 Huy hiệu đồng2 gold badges35 silver badges37 bronze badges

Để mở một tệp, bạn có thể sử dụng lệnh

path = '/Users/user/Desktop'
files = os.listdir[path]
print files
1. Cú pháp là
path = '/Users/user/Desktop'
files = os.listdir[path]
print files
2 trong đó 'loại' là r để đọc, w để viết và để nối thêm. Các lệnh để làm điều này là
path = '/Users/user/Desktop'
files = os.listdir[path]
print files
3 và
path = '/Users/user/Desktop'
files = os.listdir[path]
print files
4. Để có được đầu ra từ lệnh dòng lệnh, bạn phải sử dụng popen và quy trình con thay vì
os.system['ls /Users/user/Desktop > out.txt']
6. os.system [] không trả về một giá trị. Bạn có thể đọc thêm trên Popen ở đây.

Đã trả lời ngày 25 tháng 1 năm 2012 lúc 15:13Jan 25, 2012 at 15:13

CofferaisCoffeerainCoffeeRain

4.4344 Huy hiệu vàng30 Huy hiệu bạc 50 Huy hiệu Đồng4 gold badges30 silver badges50 bronze badges

Giới thiệu

Hàm

path = '/Users/user/Desktop'
files = os.listdir[path]
print files
6 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 thực thi chương trình Python. Tuy nhiên, chúng ta có thể thay đổi hành vi của nó để viết văn bản vào một tệp thay vì vào bảng điều khiển.

Trong bài viết này, chúng tôi sẽ kiểm tra nhiều cách chúng tôi có thể viết vào một tệp với chức năng

path = '/Users/user/Desktop'
files = os.listdir[path]
print files
6.

Chuyển hướng đầu ra kịch bản của Python trong thiết bị đầu cuối

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

Ví dụ: nếu chúng ta có một tệp python có tên

path = '/Users/user/Desktop'
files = os.listdir[path]
print files
8 với các nội dung sau:

print["Hallo"] # Deliberately in German

Chúng ta có thể chuyển hướng đầu ra của tệp trong shell bằng một khung góc phải duy nhất:

$ python3 hello.py > output.txt

Nếu chúng tôi mở

path = '/Users/user/Desktop'
files = os.listdir[path]
print files
9 mới được tạo, chúng tôi sẽ thấy các nội dung sau:

Hallo

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

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

Trong Python, hàm

path = '/Users/user/Desktop'
files = os.listdir[path]
print files
6 linh hoạt hơn bạn nghĩ. Nó không được mã hóa cứng theo cách mà văn bản được chỉ định chỉ có thể được ghi vào màn hình. Thay vào đó, nó gửi văn bản đến một vị trí gọi là luồng đầu ra tiêu chuẩn, còn được gọi là
print["Hallo"] # Deliberately in German
1.

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

print["Hallo"] # Deliberately in German
2], ống đầu ra tiêu chuẩn [
print["Hallo"] # Deliberately in German
1] và ống lỗi tiêu chuẩn [
print["Hallo"] # Deliberately in German
4].

Theo mặc định, đường ống đầu ra tiêu chuẩn chỉ vào cửa sổ tương tác được sử dụng để thực hiện chương trình, vì vậy chúng ta thường thấy văn bản được in 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ư các 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

path = '/Users/user/Desktop'
files = os.listdir[path]
print files
6 sẽ được ghi vào tệp đó thay vì được hiển thị trên màn hình.

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

print["Hallo"] # Deliberately in German
1 của mô -đun
print["Hallo"] # Deliberately in German
7. Nó là một đối tượng giống như tệp, có 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ụ trong đó chúng ta thay đổi

print["Hallo"] # Deliberately in German
1 thành một tệp:

import sys

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

original_stdout = sys.stdout # Save a reference to the original standard output

with open['filename.txt', 'w'] as f:
    sys.stdout = f # Change the standard output to the file we created.
    print['This message will be written to a file.']
    sys.stdout = original_stdout # Reset the standard output to its original value

Hàm

path = '/Users/user/Desktop'
files = os.listdir[path]
print files
6 lấy đối số chuỗi được cung cấp, nối thêm một ký tự dòng mới đến cuối và gọi phương thức
$ python3 hello.py > output.txt
0 để ghi nó vào đầu ra tiêu chuẩn.

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

print["Hallo"] # Deliberately in German
1 vào đối tượng tệp tùy chỉnh của chúng tôi -
$ python3 hello.py > output.txt
2. Vì một đối tượng tệp có phương thức
$ python3 hello.py > output.txt
3 hoàn toàn hợp lệ, 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 đó là cách thực hành tốt để 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 của nó sau khi chúng tôi hoàn thành, điều này có thể giúp tránh sự nhầm lẫn.

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

$ python3 hello.py > output.txt
4. Và sau đó, hãy thực hiện nó:

$ python3 printToFile.py

Chúng ta sẽ thấy đầu ra sau trong thiết bị đầu cuối:

This message will be displayed on the screen.

Và tập lệnh sẽ tạo một tệp mới có tên

$ python3 hello.py > output.txt
5 với các nội dung sau:

Kiểm tra hướng dẫn thực hành của chúng tôi, thực tế để học Git, với các thực hành tốt nhất, các tiêu chuẩn được công nghiệp chấp nhận và bao gồm bảng gian lận. Ngừng các lệnh git googling 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 làm thế nào 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à

print["Hallo"] # Deliberately in German
4. Điều này cũng mặc định vào cửa sổ tương tác nhưng có thể được thay đổi thông qua đối tượng
$ python3 hello.py > output.txt
7. Nếu chúng tôi muốn in các giá trị vào
print["Hallo"] # Deliberately in German
4, chúng tôi chỉ có thể chuyển hướng
$ python3 hello.py > output.txt
9 để trỏ đến
$ python3 hello.py > output.txt
7.

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

Hallo
1 và thêm mã sau:

os.system['ls /Users/user/Desktop > out.txt']
0

Ví dụ này gần như giống hệt với cái trước, ngoại trừ thay vì chuyển hướng luồng đầu ra tiêu chuẩn đến một tệp, chúng tôi chuyển hướng nó sang 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 ở một nơi khác, đầu ra sẽ được gửi đến vị trí đó thay vì đến màn hình.

Hãy chạy tệp này:

os.system['ls /Users/user/Desktop > out.txt']
1

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

os.system['ls /Users/user/Desktop > out.txt']
2

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 bằ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 đối tượng giống như tệp khác bằng cách thay đổi đối tượng

print["Hallo"] # Deliberately in German
1. Tuy nhiên, để thuận tiện, chúng ta có thể thực hiện điều này trực tiếp từ trong hàm
path = '/Users/user/Desktop'
files = os.listdir[path]
print files
6 bằng cách chỉ định vị trí đầu ra với tham số
Hallo
4:

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

print["Hallo"] # Deliberately in German
1, chúng tôi sẽ viết:

os.system['ls /Users/user/Desktop > out.txt']
3

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

path = '/Users/user/Desktop'
files = os.listdir[path]
print files
6.

Lưu ý: Mặc dù tên của tham số là

Hallo
4, hãy nhớ rằng nó hoạt động với bất kỳ đối tượng giống như tệp nào. Ví dụ, nếu bạn muốn in lên
print["Hallo"] # Deliberately in German
4, bạn sẽ thay đổi câu lệnh
path = '/Users/user/Desktop'
files = os.listdir[path]
print files
6 thành:
Although the parameter's name is
Hallo
4, remember that it works with any file-like object. If you wanted to print to
print["Hallo"] # Deliberately in German
4, for example, you would change the
path = '/Users/user/Desktop'
files = os.listdir[path]
print files
6 statement to:

os.system['ls /Users/user/Desktop > out.txt']
4

Sự kết luận

Trong bài viết này, chúng tôi đã thảo luận về việc chuyển hướng đầu ra chức năng

path = '/Users/user/Desktop'
files = os.listdir[path]
print files
6 của Python bằng các 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 các tập lệnh Python và chỉ định một đối tượng giống như tệp trong tham số
Hallo
4 trực tiếp trong hàm
path = '/Users/user/Desktop'
files = os.listdir[path]
print files
6.

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à 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 Sách hướng dẫn Coding Essentials cho các nhà phát triển, 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.

Bài Viết Liên Quan

Chủ Đề