FileNotFoundError — DedSec Project
Python FileNotFoundError: βρες τον πραγματικό φάκελο του αρχείου Η FileNotFoundError σημαίνει ότι το ζητούμενο μονοπάτι δεν αντιστοιχεί σε διαθέσιμο αρχείο από την οπτική της διεργασίας…
Python FileNotFoundError: βρες τον πραγματικό φάκελο του αρχείου
Η FileNotFoundError σημαίνει ότι το ζητούμενο μονοπάτι δεν αντιστοιχεί σε διαθέσιμο αρχείο από την οπτική της διεργασίας. Μπορεί να προκληθεί από open(), pathlib ή ακόμα και κατά την εκκίνηση άλλου προγράμματος. Σημαντικό: τα σχετικά μονοπάτια βασίζονται στον τρέχοντα φάκελο εκτέλεσης, όχι αυτόματα στον κατάλογο όπου είναι αποθηκευμένο το script.
Διάγνωση χωρίς αλλαγή αρχείων
from pathlib import Path
cwd = Path.cwd()
script_dir = Path(__file__).resolve().parent
relative = Path("samples") / "input.txt"
print("τρέχων φάκελος:", cwd)
print("φάκελος script:", script_dir)
print("διαδρομή από cwd:", (cwd / relative).resolve())
print("διαδρομή από script:", (script_dir / relative).resolve())
print("υπάρχει δίπλα στο script:", (script_dir / relative).is_file())
Αν εκκινήσεις το script από άλλον κατάλογο, η πρώτη διαδρομή αλλάζει αλλά η δεύτερη παραμένει συνδεδεμένη με το script. Για πόρους που διανέμονται μαζί με το πρόγραμμα χρειάζεται ρητή στρατηγική εντοπισμού και όχι υπόθεση ότι ο χρήστης ξεκινά πάντα από την ίδια θέση. Σε packaged εφαρμογές η τοποθεσία μπορεί να διαφέρει από το source tree.
Μικρή δοκιμή με ασφαλές δείγμα
Σε προσωρινό φάκελο προσπάθησε να διαβάσεις αρχείο με όνομα που ξέρεις ότι δεν υπάρχει. Έλεγξε πρώτα is_file() και κατάγραψε το μονοπάτι από την εξαίρεση. Στη συνέχεια δημιούργησε δικό σου απλό UTF-8 fixture και επιβεβαίωσε την επιτυχημένη ανάγνωση. Μην δημιουργείς τυφλά άδειο configuration file για να εξαφανίσεις το μήνυμα: μπορεί να κρύψεις το πρόβλημα της διανομής.
Διαφοροποίηση από σφάλματα δικαιωμάτων
Ένα υπάρχον αρχείο χωρίς άδεια ανάγνωσης προκαλεί συνήθως PermissionError, όχι FileNotFoundError. Ένας γονικός κατάλογος χωρίς πρόσβαση ή ένα προβληματικό network mount μπορεί να περιπλέξει το αποτέλεσμα. Σε Linux και Termux τα κεφαλαία συνήθως μετρούν, ενώ τα Windows μπορεί να έχουν διαφορετική συμπεριφορά. Έλεγξε επίσης symlinks και την ακριβή διαδρομή που λαμβάνει η αποτυχημένη συνάρτηση.
Κριτήριο επιτυχίας
Κατάγραψε την ακριβή εξαίρεση, τα δύο υποψήφια μονοπάτια, το αναμενόμενο περιεχόμενο και την πραγματική ανάγνωση στο σωστό σημείο. Δήλωσε λειτουργικό και layout εγκατάστασης. Αν δεν εκτέλεσες δοκιμή, ξεχώρισε την πρόβλεψη από την παρατήρηση. Η λύση είναι να διορθώσεις τη στρατηγική αναζήτησης, όχι να αλλάξεις αδιακρίτως permissions.