Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mengalihkan Keluaran Cetakan Python ke Fail dan Mengapa Ia Mungkin Gagal?

Bagaimanakah Saya Boleh Mengalihkan Keluaran Cetakan Python ke Fail dan Mengapa Ia Mungkin Gagal?

Barbara Streisand
Barbara Streisandasal
2024-11-28 21:28:12465semak imbas

How Can I Redirect Python's Print Output to a File and Why Might It Fail?

Ubah Hala Keluar untuk Kod Python

Pertanyaan berpusat di sekitar mengubah hala kenyataan cetakan ke fail teks yang ditetapkan menggunakan Python. Walaupun menggunakan teknik sys.stdout, fail sasaran kekal kosong. Artikel ini bertujuan untuk meneroka isu dan menyediakan penyelesaian alternatif.

Menggunakan Objek Fail untuk Output

Pendekatan paling mudah melibatkan penulisan 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

Ubah hala Standard Output

Sebagai alternatif, ubah hala stdout boleh dicapai dengan kod berikut:

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

Menggunakan Pengurus Konteks Perpustakaan Standard

Untuk Python 3.4 dan ke atas, pengurus konteks khusus boleh memudahkan perkara ini proses:

from contextlib import redirect_stdout

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

Pengalihan Output Luaran

Mengubah hala output secara luaran melalui cangkerang ialah satu lagi pilihan yang berdaya maju:

./script.py > out.txt

Tambahan Pertimbangan

  • Sahkan ketersediaan bamfiles dalam laluan yang ditentukan menggunakan glob.glob.
  • Gunakan os.path.join dan os.path.basename untuk manipulasi laluan dan nama fail yang cekap.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengalihkan Keluaran Cetakan Python ke Fail dan Mengapa Ia Mungkin Gagal?. 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