Pertanyaan Bagaimana cara memeriksa apakah file ada?


Bagaimana saya melihat apakah file ada atau tidak, tanpa menggunakan try pernyataan?


4347
2017-09-17 12:55


asal


Jawaban:


Jika alasan Anda memeriksa sehingga Anda dapat melakukan sesuatu seperti itu if file_exists: open_it(), lebih aman menggunakan try sekitar upaya untuk membukanya. Memeriksa dan kemudian membuka risiko file yang dihapus atau dipindahkan atau sesuatu antara saat Anda memeriksa dan kapan Anda mencoba membukanya.

Jika Anda tidak berencana untuk segera membuka file, Anda dapat menggunakannya os.path.isfile

Kembali True jika path adalah file reguler yang ada. Ini mengikuti tautan simbolis, jadi keduanya islink () dan isfile () bisa benar untuk jalan yang sama.

import os.path
os.path.isfile(fname) 

jika Anda perlu memastikan itu file.

Dimulai dengan Python 3.4, the pathlib modul menawarkan pendekatan berorientasi objek (dibalikkan ke pathlib2 dengan Python 2.7):

from pathlib import Path

my_file = Path("/path/to/file")
if my_file.is_file():
    # file exists

Untuk memeriksa direktori, lakukan:

if my_file.is_dir():
    # directory exists

Untuk memeriksa apakah suatu Path objek ada secara independen dari apakah itu file atau direktori, gunakan exists():

if my_file.exists():
    # path exists

Anda juga bisa menggunakan resolve() di sebuah try blok:

try:
    my_abs_path = my_file.resolve()
except FileNotFoundError:
    # doesn't exist
else:
    # exists

3949
2017-09-17 12:57



Kamu punya os.path.exists fungsi:

import os.path
os.path.exists(file_path)

Ini kembali True untuk kedua file dan direktori tetapi Anda dapat menggunakannya

os.path.isfile(file_name)

untuk menguji apakah itu file khusus. Ini mengikuti symlink.


1624
2017-09-17 12:57



Tidak seperti isfile(), exists() akan kembali True untuk direktori.
Jadi tergantung apakah Anda hanya menginginkan file biasa atau juga direktori, yang akan Anda gunakan isfile() atau exists(). Berikut ini adalah output REPL sederhana.

>>> print os.path.isfile("/etc/password.txt")
True
>>> print os.path.isfile("/etc")
False
>>> print os.path.isfile("/does/not/exist")
False
>>> print os.path.exists("/etc/password.txt")
True
>>> print os.path.exists("/etc")
True
>>> print os.path.exists("/does/not/exist")
False

835
2017-09-17 15:01



import os.path

if os.path.isfile(filepath):

467
2017-09-17 12:55



Menggunakan os.path.isfile() dengan os.access():

import os
import os.path

PATH='./file.txt'

if os.path.isfile(PATH) and os.access(PATH, os.R_OK):
    print "File exists and is readable"
else:
    print "Either the file is missing or not readable"

220
2018-01-16 05:57



import os
os.path.exists(path) # Returns whether the path (directory or file) exists or not
os.path.isfile(path) # Returns whether the file exists or not

209
2017-09-17 12:56



Ini adalah cara paling sederhana untuk memeriksa apakah file ada. Hanya karena file ada saat Anda memeriksa tidak menjamin bahwa itu akan ada ketika Anda perlu membukanya.

import os
fname = "foo.txt"
if os.path.isfile(fname):
    print("file does exist at this time")
else:
    print("no such file exists at this time")

138
2018-06-27 13:38