Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah `os.listdir()` Menyebabkan `FileNotFoundError` dalam Python Apabila Membuka Fail?

Mengapakah `os.listdir()` Menyebabkan `FileNotFoundError` dalam Python Apabila Membuka Fail?

DDD
DDDasal
2024-12-07 14:22:13599semak imbas

Why Does `os.listdir()` Cause `FileNotFoundError` in Python When Opening Files?

Fail Tidak Ditemui Ralat dalam Python Semasa Menggunakan os.listdir

Menyalakan pada fail dalam direktori menggunakan os.listdir() boleh mencetuskan FileNotFoundError, walaupun semasa fail wujud. Ralat ini berlaku kerana os.listdir() hanya mengembalikan nama fail, bukan laluan penuh.

Pertimbangkan kod berikut:

import os

path = r'E:/somedir'

for filename in os.listdir(path):
    f = open(filename, 'r')

Apabila dilaksanakan, kod ini akan menjana FileNotFoundError untuk fail 'foo.txt', walaupun ia wujud dalam direktori yang ditentukan.

Masalahnya terletak pada fakta bahawa os.listdir() hanya mengembalikan bahagian nama fail, seperti 'foo.txt'. Walau bagaimanapun, fungsi open() memerlukan laluan penuh ke fail, termasuk laluan direktori, seperti 'E:/somedir/foo.txt'.

Untuk menyelesaikan isu ini, os.path.join( ) boleh digunakan untuk menambah laluan direktori kepada nama fail:

path = r'E:/somedir'

for filename in os.listdir(path):
    with open(os.path.join(path, filename)) as f:
        # process the file

Blok dengan juga boleh digunakan untuk menutup fail secara automatik.

Atas ialah kandungan terperinci Mengapakah `os.listdir()` Menyebabkan `FileNotFoundError` dalam Python Apabila Membuka 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