7118 Stimmen

Wie kann ich überprüfen, ob eine Datei ohne Ausnahmen existiert?

Wie prüfe ich, ob eine Datei existiert oder nicht, ohne die try Aussage?

16 Stimmen

Um zu prüfen, ob ein Path-Objekt existiert, unabhängig davon, ob es sich um eine Datei oder ein Verzeichnis handelt, verwenden Sie my_path.exists() .

1 Stimmen

my_path.exists() ist nicht ausreichend. my_path.is_file() wird Ihnen sagen, ob es sich um eine Datei handelt (könnte zum Lesen gut sein). Aber wenn Sie die Datei erstellen wollen, müssen Sie auch prüfen exists schließen Sie also Verzeichnisse oder andere Dinge im Dateisystem, die keine Dateien sind, aus, die den Fehler verursachen.

0 Stimmen

Verwenden Sie os.path.isfile, um nur Dateien zu prüfen, und verwenden Sie os.path.exists, um sowohl Dateien als auch Verzeichnisse zu prüfen. Mehr dazu erfahren Sie hier: shortbuzz.in/blog/shortbuzz.in/

11voto

Khaled.K Punkte 5688
import os.path

def isReadableFile(file_path, file_name):
    full_path = file_path + "/" + file_name
    try:
        if not os.path.exists(file_path):
            print "File path is invalid."
            return False
        elif not os.path.isfile(full_path):
            print "File does not exist."
            return False
        elif not os.access(full_path, os.R_OK):
            print "File cannot be read."
            return False
        else:
            print "File can be read."
            return True
    except IOError as ex:
        print "I/O error({0}): {1}".format(ex.errno, ex.strerror)
    except Error as ex:
        print "Error({0}): {1}".format(ex.errno, ex.strerror)
    return False
#------------------------------------------------------

path = "/usr/khaled/documents/puzzles"
fileName = "puzzle_1.txt"

isReadableFile(path, fileName)

0 Stimmen

@j6m8 ja, isReadableFile(path,fileName) wird zurückgegeben True ob die Datei für den Prozess erreichbar und lesbar ist \program\thread

10voto

Gopinath Punkte 3601

existiert() y is_file() Methoden der ' Pfad Objekt kann verwendet werden, um zu prüfen, ob ein bestimmter Pfad existiert und eine Datei ist.

Python 3-Programm zur Überprüfung, ob eine Datei existiert:

# File name:  check-if-file-exists.py

from pathlib import Path

filePath = Path(input("Enter path of the file to be found: "))

if filePath.exists() and filePath.is_file():
    print("Success: File exists")
else:
    print("Error: File does not exist")

Ausgabe:

$ python3 check-if-file-exists.py

Geben Sie den Pfad der zu suchenden Datei ein: /Benutzer/macuser1/stack-overflow/index.html

Erfolg: Datei existiert

$ python3 check-if-file-exists.py

Geben Sie den Pfad der zu suchenden Datei ein: hghjg jghj

Fehler: Die Datei existiert nicht

9voto

Devbrat Shukla Punkte 389

Utilice os.path.exists() um zu prüfen, ob die Datei existiert oder nicht:

def fileAtLocation(filename,path):
    return os.path.exists(path + filename)

filename="dummy.txt"
path = "/home/ie/SachinSaga/scripts/subscription_unit_reader_file/"

if fileAtLocation(filename,path):
   print('file found at location..')
else:
   print('file not found at location..')

0 Stimmen

Gibt es eine Erklärung dafür, warum diese Antwort heruntergestuft wurde? Ist os.path.exists() keine Lösung?

3 Stimmen

@YashNag aus einer anderen Antwort : Im Gegensatz zu isfile() , exists() gibt bei Verzeichnissen True zurück.

1 Stimmen

Dies ist in der Regel, was Sie wollen, nicht isfile, da die Frage "existiert eine Datei" ist in der Regel wirklich fragen, ob ein Pfad existiert, nicht ob es eine Datei ist. Bitte hören Sie auf, nützliche Informationen herabzuwürdigen.

7voto

Hanson Punkte 193

So prüfen Sie, ob eine Datei existiert,

from sys import argv

from os.path import exists
script, filename = argv
target = open(filename)
print "file exists: %r" % exists(filename)

7 Stimmen

Exists unterscheidet nicht zwischen einer Datei und einem Verzeichnis. os.path.isfile ist eine bessere Methode, um zu prüfen, ob eine Datei existiert.

7voto

Jesvin Jose Punkte 21548
import os
path = /path/to/dir

root,dirs,files = os.walk(path).next()
if myfile in files:
   print "yes it exists"

Dies ist hilfreich, wenn Sie nach mehreren Dateien suchen. Oder Sie wollen eine Schnittmenge/Subtraktion mit einer bestehenden Liste durchführen.

4 Stimmen

Dies ist in zweierlei Hinsicht falsch: (1) os.walk alle Dateien unter einem Verzeichnisbaum zu finden -- wenn der Benutzer nach ./FILE ist es unwahrscheinlich, dass er eine solche Behandlung durchführen will. ./some/sub/folder/FILE als Übereinstimmung, was Ihre Lösung tut; und (2) Ihre Lösung ist sehr ineffizient im Vergleich zu einer einfachen os.path.isfile() aufrufen, wenn sich viele Dateien unterhalb des aktuellen Verzeichnisses befinden. In dem Fall, dass kein passender Dateiname-ohne-Pfad innerhalb des Baums existiert, wird Ihr Code jede einzelne Datei im Baum aufzählen, bevor er false zurückgibt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X