Hướng dẫn python output to file - đầu ra python thành tệp

Cách rõ ràng nhất để làm điều này là in vào đối tượng tệp:

Nội dung chính ShowShow

  • f = open[filename,'w'] print['whatever', file=f] # Python 3.x print >>f, 'whatever' # Python 2.x
  • Trong hầu hết các trường hợp, tốt hơn hết là bạn nên viết vào tệp bình thường.
  • Đã trả lời ngày 22 tháng 8 năm 2011 lúc 19:56
  • Vì đối tượng tệp thường chứa phương thức f = open[filename,'w'] print['whatever', file=f] # Python 3.x print >>f, 'whatever' # Python 2.x 6, tất cả những gì bạn cần làm là chuyển một đối tượng tệp vào đối số của nó.
  • Sao chép chức năng in gốc vào biến mới
  • Ghi đè chức năng in hiện có
  • Hiển thị tệp
  • Làm cách nào để chuyển đầu ra vào một tệp trong Python?
  • Làm cách nào để lưu bảng điều khiển đầu ra trong Python?
  • Làm thế nào để bạn lưu một tệp văn bản dưới dạng đầu ra?

with open['out.txt', 'w'] as f:
    print['Filename:', filename, file=f]  # Python 3.x
    print >> f, 'Filename:', filename     # Python 2.x

Tuy nhiên, việc chuyển hướng stdout cũng hoạt động cho tôi. Nó có lẽ là tốt cho một tập lệnh một lần như thế này:

import sys

orig_stdout = sys.stdout
f = open['out.txt', 'w']
sys.stdout = f

for i in range[2]:
    print['i = ', i]

sys.stdout = orig_stdout
f.close[]

Vì Python 3.4, có một trình quản lý bối cảnh đơn giản có sẵn để thực hiện việc này trong thư viện tiêu chuẩn:

from contextlib import redirect_stdout

with open['out.txt', 'w'] as f:
    with redirect_stdout[f]:
        print['data']

Chuyển hướng ra bên ngoài từ bản thân vỏ là một tùy chọn khác và thường thích hợp hơn:

./script.py > out.txt

Các câu hỏi khác:

Tên tệp đầu tiên trong tập lệnh của bạn là gì? Tôi không thấy nó được khởi tạo.

Dự đoán đầu tiên của tôi là Glob không tìm thấy bất kỳ bamfiles nào, và do đó, vòng lặp cho vòng không chạy. Kiểm tra xem thư mục có tồn tại không và in ra BamFiles trong tập lệnh của bạn.

Ngoài ra, sử dụng Os.Path.Join và Os.Path.Basename để thao túng các đường dẫn và tên tệp.

mkrieger1

Huy hiệu vàng 16K449 Huy hiệu bạc57 Huy hiệu đồng4 gold badges49 silver badges57 bronze badges4 gold badges49 silver badges57 bronze badges

Đã trả lời ngày 22 tháng 8 năm 2011 lúc 20:00Aug 22, 2011 at 20:00Aug 22, 2011 at 20:00

Gringo Suavegringo SuaveGringo SuaveGringo Suave

28.5K6 Huy hiệu vàng84 Huy hiệu bạc74 Huy hiệu đồng6 gold badges84 silver badges74 bronze badges6 gold badges84 silver badges74 bronze badges

12

Bạn có thể chuyển hướng in với đối số

./script.py > out.txt
7 [trong Python 2 có toán tử
./script.py > out.txt
8 thay thế].
f = open[filename,'w']
print['whatever', file=f] # Python 3.x
print >>f, 'whatever'     # Python 2.x

Trong hầu hết các trường hợp, tốt hơn hết là bạn nên viết vào tệp bình thường.

f.write['whatever']

Đã trả lời ngày 22 tháng 8 năm 2011 lúc 19:56

./script.py > out.txt
9:
f.write[' '.join[['whatever', str[var2], 'etc']]]

mkrieger1

Huy hiệu vàng 16K449 Huy hiệu bạc57 Huy hiệu đồng4 gold badges49 silver badges57 bronze badges4 gold badges49 silver badges57 bronze badges

Đã trả lời ngày 22 tháng 8 năm 2011 lúc 20:00Aug 22, 2011 at 20:00Aug 22, 2011 at 19:56

3

Gringo Suavegringo SuaveGringo Suave

f = open[filename,'w']
print['whatever', file=f] # Python 3.x
print >>f, 'whatever'     # Python 2.x
0

28.5K6 Huy hiệu vàng84 Huy hiệu bạc74 Huy hiệu đồng6 gold badges84 silver badges74 bronze badges

Bạn có thể chuyển hướng in với đối số

./script.py > out.txt
7 [trong Python 2 có toán tử
./script.py > out.txt
8 thay thế].
f = open[filename,'w']
print['whatever', file=f] # Python 3.x
print >>f, 'whatever'     # Python 2.x

f = open[filename,'w'] print['whatever', file=f] # Python 3.x print >>f, 'whatever' # Python 2.x

import sys

orig_stdout = sys.stdout
f = open['out.txt', 'w']
sys.stdout = f

for i in range[2]:
    print['i = ', i]

sys.stdout = orig_stdout
f.close[]
3

Trong hầu hết các trường hợp, tốt hơn hết là bạn nên viết vào tệp bình thường.

import sys

orig_stdout = sys.stdout
f = open['out.txt', 'w']
sys.stdout = f

for i in range[2]:
    print['i = ', i]

sys.stdout = orig_stdout
f.close[]
4

mkrieger1

Huy hiệu vàng 16K449 Huy hiệu bạc57 Huy hiệu đồng4 gold badges49 silver badges57 bronze badges4 gold badges49 silver badges57 bronze badges

Đã trả lời ngày 22 tháng 8 năm 2011 lúc 20:00Aug 22, 2011 at 20:00Jul 4, 2016 at 13:45

Gringo Suavegringo SuaveGringo SuaveYeo

28.5K6 Huy hiệu vàng84 Huy hiệu bạc74 Huy hiệu đồng6 gold badges84 silver badges74 bronze badges6 gold badges62 silver badges89 bronze badges

2

Bạn có thể chuyển hướng in với đối số

./script.py > out.txt
7 [trong Python 2 có toán tử
./script.py > out.txt
8 thay thế].
f = open[filename,'w']
print['whatever', file=f] # Python 3.x
print >>f, 'whatever'     # Python 2.x

Trong hầu hết các trường hợp, tốt hơn hết là bạn nên viết vào tệp bình thường.

Đã trả lời ngày 22 tháng 8 năm 2011 lúc 19:56

Vì đối tượng tệp thường chứa phương thức f = open[filename,'w'] print['whatever', file=f] # Python 3.x print >>f, 'whatever' # Python 2.x 6, tất cả những gì bạn cần làm là chuyển một đối tượng tệp vào đối số của nó.10 gold badges48 silver badges80 bronze badges

Sao chép chức năng in gốc vào biến mớiJun 30, 2015 at 12:15

1

Đã trả lời ngày 22 tháng 8 năm 2011 lúc 19:56

Ghi đè chức năng in hiện có

Hiển thị tệp

Làm cách nào để chuyển đầu ra vào một tệp trong Python?

Vì đối tượng tệp thường chứa phương thức f = open[filename,'w'] print['whatever', file=f] # Python 3.x print >>f, 'whatever' # Python 2.x 6, tất cả những gì bạn cần làm là chuyển một đối tượng tệp vào đối số của nó.

Sao chép chức năng in gốc vào biến mới

import sys

orig_stdout = sys.stdout
f = open['out.txt', 'w']
sys.stdout = f

for i in range[2]:
    print['i = ', i]

sys.stdout = orig_stdout
f.close[]
0

Ghi đè chức năng in hiện có

import sys

orig_stdout = sys.stdout
f = open['out.txt', 'w']
sys.stdout = f

for i in range[2]:
    print['i = ', i]

sys.stdout = orig_stdout
f.close[]
1

Hiển thị tệp

import sys

orig_stdout = sys.stdout
f = open['out.txt', 'w']
sys.stdout = f

for i in range[2]:
    print['i = ', i]

sys.stdout = orig_stdout
f.close[]
2

Làm cách nào để chuyển đầu ra vào một tệp trong Python?

import sys

orig_stdout = sys.stdout
f = open['out.txt', 'w']
sys.stdout = f

for i in range[2]:
    print['i = ', i]

sys.stdout = orig_stdout
f.close[]
3

Làm cách nào để lưu bảng điều khiển đầu ra trong Python?

Làm thế nào để bạn lưu một tệp văn bản dưới dạng đầu ra?Jan 1, 2018 at 20:54

Tuy nhiên, việc chuyển hướng stdout cũng hoạt động cho tôi. Nó có lẽ là tốt cho một tập lệnh một lần như thế này:

Vì Python 3.4, có một trình quản lý bối cảnh đơn giản có sẵn để thực hiện việc này trong thư viện tiêu chuẩn:jpyams

Chuyển hướng ra bên ngoài từ bản thân vỏ là một tùy chọn khác và thường thích hợp hơn:7 gold badges35 silver badges61 bronze badges

2

Các câu hỏi khác:

import sys

orig_stdout = sys.stdout
f = open['out.txt', 'w']
sys.stdout = f

for i in range[2]:
    print['i = ', i]

sys.stdout = orig_stdout
f.close[]
4

Tên tệp đầu tiên trong tập lệnh của bạn là gì? Tôi không thấy nó được khởi tạo.

import sys

orig_stdout = sys.stdout
f = open['out.txt', 'w']
sys.stdout = f

for i in range[2]:
    print['i = ', i]

sys.stdout = orig_stdout
f.close[]
5

Dự đoán đầu tiên của tôi là Glob không tìm thấy bất kỳ bamfiles nào, và do đó, vòng lặp cho vòng không chạy. Kiểm tra xem thư mục có tồn tại không và in ra BamFiles trong tập lệnh của bạn.

Ngoài ra, sử dụng Os.Path.Join và Os.Path.Basename để thao túng các đường dẫn và tên tệp.

Huy hiệu vàng 16K449 Huy hiệu bạc57 Huy hiệu đồng4 gold badges49 silver badges57 bronze badges

Đã trả lời ngày 22 tháng 8 năm 2011 lúc 20:00Aug 22, 2011 at 20:00

Với

f.write['whatever']
0, bạn có thể in giống như bạn làm
f = open[filename,'w']
print['whatever', file=f] # Python 3.x
print >>f, 'whatever'     # Python 2.x
7 hoặc bạn cũng có thể viết đầu ra vào một tệp. Bạn thậm chí có thể sử dụng các cấp tin nhắn khác nhau [
f.write['whatever']
6,
f.write['whatever']
7,
f.write['whatever']
8,
f.write['whatever']
9,
f.write[' '.join[['whatever', str[var2], 'etc']]]
0], ví dụ, chỉ in các vấn đề lớn vào bảng điều khiển, nhưng vẫn đăng nhập các hành động mã nhỏ vào tệp.

Một ví dụ đơn giản

Nhập

f.write['whatever']
0, nhận
f.write[' '.join[['whatever', str[var2], 'etc']]]
2 và đặt mức xử lý:Aug 22, 2011 at 20:24Aug 22, 2011 at 20:24

Nếu bạn muốn in vào stdout:Aaron DufourAaron Dufour

Nếu bạn cũng muốn ghi vào một tệp [nếu bạn chỉ muốn ghi vào tệp, hãy bỏ qua phần cuối cùng]:1 gold badge48 silver badges68 bronze badges1 gold badge48 silver badges68 bronze badges

3

Sau đó, bất cứ nơi nào bạn sẽ sử dụng

./script.py > out.txt
9 Sử dụng một trong các phương pháp
f.write[' '.join[['whatever', str[var2], 'etc']]]
2:
import sys

orig_stdout = sys.stdout
f = open['out.txt', 'w']
sys.stdout = f

for i in range[2]:
    print['i = ', i]

sys.stdout = orig_stdout
f.close[]
6

Để tìm hiểu thêm về việc sử dụng các tính năng

f.write['whatever']
0 nâng cao hơn, hãy đọc hướng dẫn
f.write['whatever']
0 xuất sắc trong các tài liệu Python.

Đã trả lời ngày 1 tháng 1 năm 2018 lúc 20:54

jpyamsjpyams27 gold badges251 silver badges298 bronze badges27 gold badges251 silver badges298 bronze badges

3.6657 Huy hiệu vàng35 Huy hiệu bạc61 Huy hiệu ĐồngJan 23, 2018 at 15:51Jan 23, 2018 at 15:51

Giải pháp dễ nhất không phải là thông qua Python; Nó thông qua vỏ. Từ dòng đầu tiên của tệp của bạn [

f.write[' '.join[['whatever', str[var2], 'etc']]]
7] Tôi đoán bạn đang ở trên một hệ thống Unix. Chỉ cần sử dụng các câu lệnh
./script.py > out.txt
9 như bạn thường làm và không mở tệp trong tập lệnh của bạn. Khi bạn đi chạy tập tin, thay vìyunusyunus

Để chạy tệp, sử dụng1 gold badge14 silver badges12 bronze badges1 gold badge14 silver badges12 bronze badges

0

Bạn có thể không thích câu trả lời này, nhưng tôi nghĩ đó là đúng. Đừng thay đổi điểm đến stdout của bạn trừ khi nó hoàn toàn cần thiết [có thể bạn đang sử dụng thư viện chỉ xuất ra stdout ??? rõ ràng không phải là trường hợp ở đây].

Tôi nghĩ như một thói quen tốt, bạn nên chuẩn bị dữ liệu của mình trước thời hạn như một chuỗi, sau đó mở tập tin của bạn và viết toàn bộ mọi thứ cùng một lúc. Điều này là do các hoạt động đầu vào/đầu ra là bạn có khả năng xử lý tệp dài hơn, càng có nhiều lỗi xảy ra với tệp này [lỗi khóa tệp, lỗi I/O, v.v.]. Chỉ cần thực hiện tất cả trong một hoạt động mà không còn câu hỏi nào khi nó có thể sai.

Đây là một ví dụ:

import sys

orig_stdout = sys.stdout
f = open['out.txt', 'w']
sys.stdout = f

for i in range[2]:
    print['i = ', i]

sys.stdout = orig_stdout
f.close[]
7

Và sau đó, khi bạn hoàn thành việc thu thập "dòng dữ liệu" của mình cho mỗi mục danh sách, bạn có thể tham gia cùng họ với một số ký tự

import sys

orig_stdout = sys.stdout
f = open['out.txt', 'w']
sys.stdout = f

for i in range[2]:
    print['i = ', i]

sys.stdout = orig_stdout
f.close[]
35 để tạo ra toàn bộ điều có thể xuất hiện; Thậm chí có thể bọc câu lệnh đầu ra của bạn trong khối
import sys

orig_stdout = sys.stdout
f = open['out.txt', 'w']
sys.stdout = f

for i in range[2]:
    print['i = ', i]

sys.stdout = orig_stdout
f.close[]
36, để có thêm sự an toàn [sẽ tự động đóng tay cầm đầu ra của bạn ngay cả khi có sự cố xảy ra]:
./script.py > out.txt
78

Tuy nhiên, nếu bạn có rất nhiều dữ liệu để viết, bạn có thể viết nó từng lần một. Tôi không nghĩ rằng nó có liên quan đến ứng dụng của bạn nhưng đây là sự thay thế:could write it one piece at a time. I don't think it's relevant to your application but here's the alternative:could write it one piece at a time. I don't think it's relevant to your application but here's the alternative:

import sys

orig_stdout = sys.stdout
f = open['out.txt', 'w']
sys.stdout = f

for i in range[2]:
    print['i = ', i]

sys.stdout = orig_stdout
f.close[]
9

Đã trả lời ngày 22 tháng 8 năm 2011 lúc 20:20Aug 22, 2011 at 20:20Aug 22, 2011 at 20:20

Machine khao khát khao khátmachine yearningmachine yearning

9,5215 huy hiệu vàng36 Huy hiệu bạc51 Huy hiệu đồng5 gold badges36 silver badges51 bronze badges5 gold badges36 silver badges51 bronze badges

8

Nếu chuyển hướng

f = open[filename,'w']
print['whatever', file=f] # Python 3.x
print >>f, 'whatever'     # Python 2.x
7 hoạt động cho vấn đề của bạn, câu trả lời của Gringo Suave là một minh chứng tốt cho cách thực hiện.

Để làm cho nó trở nên dễ dàng hơn, tôi đã tạo một phiên bản sử dụng BusterManagers cho một cú pháp gọi tổng quát ngắn gọn bằng cách sử dụng câu lệnh

import sys

orig_stdout = sys.stdout
f = open['out.txt', 'w']
sys.stdout = f

for i in range[2]:
    print['i = ', i]

sys.stdout = orig_stdout
f.close[]
36:
from contextlib import redirect_stdout

with open['out.txt', 'w'] as f:
    with redirect_stdout[f]:
        print['data']
0

Để sử dụng nó, bạn chỉ cần làm như sau [bắt nguồn từ ví dụ của Suave]:

from contextlib import redirect_stdout

with open['out.txt', 'w'] as f:
    with redirect_stdout[f]:
        print['data']
1

Nó hữu ích cho việc chuyển hướng chọn lọc

./script.py > out.txt
9 khi một mô -đun sử dụng nó theo cách bạn không thích. Nhược điểm duy nhất [và đây là Dealbreaker cho nhiều tình huống] là nó không hoạt động nếu người ta muốn nhiều luồng có các giá trị khác nhau của
f = open[filename,'w']
print['whatever', file=f] # Python 3.x
print >>f, 'whatever'     # Python 2.x
7, nhưng điều đó đòi hỏi một phương pháp tốt hơn, tổng quát hơn: truy cập mô -đun gián tiếp. Bạn có thể thấy việc thực hiện điều đó trong các câu trả lời khác cho câu hỏi này.

Đã trả lời ngày 6 tháng 1 năm 2019 lúc 4:48Jan 6, 2019 at 4:48Jan 6, 2019 at 4:48

GrahamgrahamGrahamGraham

2.5553 Huy hiệu vàng15 Huy hiệu bạc 30 Huy hiệu Đồng3 gold badges15 silver badges30 bronze badges3 gold badges15 silver badges30 bronze badges

2

Đây là một phương thức khác mà tôi đã sử dụng để in vào tệp/nhật ký ... Sửa đổi chức năng in tích hợp để nó đăng nhập vào một tệp trong thư mục temp với dấu thời gian hiện tại, cũng như in vào stdout. Lợi thế thực sự duy nhất để làm điều này trong một tập lệnh là không phải đi và sửa đổi các câu lệnh in hiện có.

from contextlib import redirect_stdout

with open['out.txt', 'w'] as f:
    with redirect_stdout[f]:
        print['data']
2
from contextlib import redirect_stdout

with open['out.txt', 'w'] as f:
    with redirect_stdout[f]:
        print['data']
3

Sao chép chức năng in gốc vào biến mới

from contextlib import redirect_stdout

with open['out.txt', 'w'] as f:
    with redirect_stdout[f]:
        print['data']
4
from contextlib import redirect_stdout

with open['out.txt', 'w'] as f:
    with redirect_stdout[f]:
        print['data']
5

Ghi đè chức năng in hiện có

from contextlib import redirect_stdout

with open['out.txt', 'w'] as f:
    with redirect_stdout[f]:
        print['data']
6
from contextlib import redirect_stdout

with open['out.txt', 'w'] as f:
    with redirect_stdout[f]:
        print['data']
7
from contextlib import redirect_stdout

with open['out.txt', 'w'] as f:
    with redirect_stdout[f]:
        print['data']
8

Hiển thị tệp

from contextlib import redirect_stdout

with open['out.txt', 'w'] as f:
    with redirect_stdout[f]:
        print['data']
9
./script.py > out.txt
0

Xóa tệp

./script.py > out.txt
1

Đã trả lời ngày 25 tháng 1 lúc 15:28Jan 25 at 15:28Jan 25 at 15:28

TCB919TCB919TCB919TCB919

Phù hiệu đồng 12366 bronze badges6 bronze badges

Tôi có thể bẻ khóa điều này bằng phương pháp sau. Nó sẽ sử dụng chức năng in này thay vì chức năng in tích hợp và lưu nội dung vào một tệp.

./script.py > out.txt
2

Đã trả lời ngày 18 tháng 9 năm 2021 lúc 19:51Sep 18, 2021 at 19:51Sep 18, 2021 at 19:51

Arjun g perambraarjun g perambraArjun G PerambraArjun G Perambra

1.9991 Huy hiệu vàng17 Huy hiệu bạc17 Huy hiệu đồng1 gold badge17 silver badges17 bronze badges1 gold badge17 silver badges17 bronze badges

2

Thay đổi giá trị của sys.stdout không thay đổi điểm đến của tất cả các cuộc gọi để in. Nếu bạn sử dụng một cách khác để thay đổi điểm đến của in, bạn sẽ nhận được kết quả tương tự.

Lỗi của bạn ở một nơi khác:

  • Nó có thể nằm trong mã bạn đã xóa cho câu hỏi của bạn [tên tệp đến từ đâu để gọi mở?]
  • Nó cũng có thể là bạn không chờ dữ liệu được xóa: Nếu bạn in trên thiết bị đầu cuối, dữ liệu sẽ được xóa sau mỗi dòng mới, nhưng nếu bạn in vào tệp, nó chỉ được xóa khi bộ đệm stdout đầy đủ [4096 byte Trên hầu hết các hệ thống].

Đã trả lời ngày 22 tháng 8 năm 2011 lúc 20:05Aug 22, 2011 at 20:05Aug 22, 2011 at 20:05

JeromejeromeJeromeJerome

2.32114 Huy hiệu bạc24 Huy hiệu đồng14 silver badges24 bronze badges14 silver badges24 bronze badges

Trong Python 3, bạn có thể chỉ định lại

./script.py > out.txt
9:
./script.py > out.txt
3

Lưu ý rằng bản in từ

import sys

orig_stdout = sys.stdout
f = open['out.txt', 'w']
sys.stdout = f

for i in range[2]:
    print['i = ', i]

sys.stdout = orig_stdout
f.close[]
42 chỉ chuyển đổi đầu ra vì in đang được gán lại trong phạm vi toàn cầu. Nếu chúng ta gán bản in trong một hàm, bản in trong
import sys

orig_stdout = sys.stdout
f = open['out.txt', 'w']
sys.stdout = f

for i in range[2]:
    print['i = ', i]

sys.stdout = orig_stdout
f.close[]
42 thường không bị ảnh hưởng. Chúng ta có thể sử dụng từ khóa toàn cầu nếu chúng ta muốn ảnh hưởng đến tất cả các cuộc gọi in:
./script.py > out.txt
4

Cá nhân, tôi thích Sidestepping yêu cầu sử dụng chức năng

./script.py > out.txt
9 bằng cách nướng bộ mô tả tệp đầu ra vào một hàm mới:
./script.py > out.txt
5

Đã trả lời ngày 8 tháng 12 năm 2020 lúc 19:04Dec 8, 2020 at 19:04Dec 8, 2020 at 19:04

ShawnshawnShawnShawn

6115 Huy hiệu bạc10 Huy hiệu đồng5 silver badges10 bronze badges5 silver badges10 bronze badges

Một cái gì đó để mở rộng chức năng in cho các vòng lặp

./script.py > out.txt
6

Đã trả lời ngày 16 tháng 7 năm 2017 lúc 19:34Jul 16, 2017 at 19:34Jul 16, 2017 at 19:34

1

Làm cách nào để chuyển đầu ra vào một tệp trong Python?

#!/usr/bin/python nhập hệ điều hành, SYS Nhập tiêu chuẩn Nhập Glob từ đường dẫn nhập hệ điều hành F = Open ['Đầu ra. TXT', 'W'] SYS.stdout = f path = '/home/xxx/gần/bamfiles' bamfiles = glob.Quả cầu [đường dẫn + '/*.

Làm cách nào để lưu bảng điều khiển đầu ra trong Python?

Làm cách nào để lưu đầu ra Python vào tệp ?...

Sử dụng hàm write [] để in đầu ra vào một tệp trong python ..

Sử dụng hàm in [] để in đầu ra vào một tệp trong Python ..

Sử dụng hệ thống.stdout để in đầu ra vào một tệp trong Python ..

Sử dụng bối cảnh.hàm direct_stdout [] để in đầu ra vào một tệp trong python ..

Làm thế nào để bạn lưu một tệp văn bản dưới dạng đầu ra?

Cách lưu đầu ra lệnh vào tệp bằng cách sử dụng dấu nhắc lệnh...

Mở bắt đầu ..

Tìm kiếm lời nhắc lệnh ..

Nhấp chuột phải vào kết quả hàng đầu và chọn tùy chọn chạy làm 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: bạn ra lệnh> c: \ path \ to \ thư mục \ output.txt ..

Bài Viết Liên Quan

Chủ Đề