Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah saya boleh mengubah hala `cetak` Output Python ke Fail?

Bagaimanakah saya boleh mengubah hala `cetak` Output Python ke Fail?

Susan Sarandon
Susan Sarandonasal
2024-12-01 07:39:11160semak imbas

How Can I Redirect Python's `print` Output to a File?

Ubah hala Output 'cetak' ke Fail

Apabila cuba mengubah hala output 'cetak' ke fail teks dalam Python, pengguna boleh menghadapi cabaran jika kod mereka tidak berkelakuan seperti yang diharapkan. Dalam kes sedemikian, menggunakan sys.stdout untuk mengubah hala output boleh membawa kepada hasil yang tidak dijangka.

Pendekatan yang mudah dan disyorkan ialah mencetak terus ke objek fail:

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

Sebagai alternatif, untuk skrip sekali sahaja, mengubah hala 'sys.stdout' boleh sesuai:

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()

Sejak Python 3.4, perpustakaan standard menyediakan pengurus konteks yang memudahkan tugas ini:

from contextlib import redirect_stdout

with open('out.txt', 'w') as f:
    with redirect_stdout(f):
        print('data')

Pengalihan luaran daripada cangkerang juga boleh menjadi pilihan yang berkesan:

./script.py > out.txt

Untuk menyelesaikan masalah yang berpotensi, pertimbangkan menyemak nama fail pertama dalam skrip, yang mungkin tidak dimulakan. Selain itu, mengesahkan bahawa folder itu wujud dan mencetak 'bamfiles' boleh membantu mengenal pasti sebarang masalah dengan penemuan fail. Menggunakan 'os.path.join' dan 'os.path.basename' untuk manipulasi laluan dan nama fail disyorkan untuk kejelasan kod yang optimum.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengubah hala `cetak` Output Python ke Fail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn