Waarom krijg ik een bestandotfoundror?

Ik probeer een eenvoudig programma te schrijven om een ​​bestand te lezen en naar een woord te zoeken en vervolgens af te drukken hoe vaak dat woord in het bestand wordt gevonden. Telkens als ik in “Test.rtf” typ (wat de naam van mijn document is) krijg ik deze foutmelding:

Traceback (most recent call last):
  File "/Users/AshleyStallings/Documents/School Work/Computer Programming/Side Projects/How many? (Python).py", line 9, in <module>
    fileScan= open(fileName, 'r')  #Opens file
FileNotFoundError: [Errno 2] No such file or directory: 'test.rtf'

In de klas Laatste semester, ik herinner me mijn professor die zegt dat je het bestand op een specifieke plaats moet opslaan? Ik weet niet zeker of hij dat echt zei, maar ik gebruik Apple OSX als dat helpt.

Hier is het belangrijkste onderdeel van mijn code:

fileName= input("Please enter the name of the file you'd like to use.")
fileScan= open(fileName, 'r')  #Opens file

Antwoord 1, Autoriteit 100%

Als de gebruiker niet het volledige pad naar het bestand passeert (op Unix-type systemen betekent dit een pad dat begint met een schuine streep), wordt het pad relatief geïnterpreteerd op de huidige werkdirectory. De huidige werkdirectory is meestal de map waarin u het programma startte. In uw geval moet het bestand test.rtfin dezelfde map bevinden waarin u het programma uitvoert.

U voert duidelijk programmeertaken uit in Python onder Mac OS. Daar raad ik aan om in de terminal te werken (op de opdrachtregel), dwz start de terminal, cdnaar de map waarin uw invoerbestand zich bevindt en het Python-script start met de opdracht

$ python script.py

Om dit te laten werken, moet de map met het uitvoerbare bestand van python zich in de PATH bevinden, een zogenaamde omgevingsvariabele die mappen bevat die automatisch worden gebruikt voor het zoeken naar uitvoerbare bestanden wanneer u een opdracht invoert. Maak hier gebruik van, want het vereenvoudigt het dagelijkse werk enorm. Op die manier kun je eenvoudig cdnaar de map met je Python-scriptbestand en het uitvoeren.

In elk geval, als je Python-scriptbestand en je gegevensinvoerbestand zich niet in dezelfde map bevinden, moet je altijd een relatief pad ertussen specificeren of je moet een absoluut pad voor een van hen gebruiken.

p>


Antwoord 2, autoriteit 36%

Een goed begin zou zijn om de invoer te valideren. Met andere woorden, u kunt er zeker van zijn dat de gebruiker inderdaad een correct pad heeft getypt voor een echt bestaand bestand, zoals dit:

import os
fileName = input("Please enter the name of the file you'd like to use.")
while not os.path.isfile(fileName):
    fileName = input("Whoops! No such file! Please enter the name of the file you'd like to use.")

Dit is met een beetje hulp van de ingebouwde module os, Dat is een onderdeel van de Standard Python Library.


Antwoord 3, autoriteit 21%

Bevindt test.rtfzich in dezelfde map waarin u zich bevindt wanneer u dit uitvoert?

Als dat niet het geval is, moet u het volledige pad naar dat bestand opgeven.

Stel dat het zich in

. bevindt

/Users/AshleyStallings/Documents/School Work/Computer Programming/Side Projects/data

In dat geval zou je

. invoeren

data/test.rtf

als uw bestandsnaam

Of het kan in

. zijn

/Users/AshleyStallings/Documents/School Work/Computer Programming/some_other_folder

In dat geval zou u

invoeren

../some_other_folder/test.rtf


Antwoord 4, Autoriteit 7%

Zoals hierboven vermeld, is het probleem bij het opgeven van het pad naar uw bestand.
Het standaardpad in OS X is uw thuisgids (/ gebruikers / MacBook vertegenwoordigd door ~ in terminal … U kunt de thuismap wijzigen of hernoemen met de geavanceerde opties in System Preferences & GT; gebruikers & amp;

Of u kunt het pad opgeven van het station naar uw bestand in de bestandsnaam:

path = "/Users/macbook/Documents/MyPython/"
myFile = path + fileName

U kunt ook het bestand vangst dat geen fout is gevonden en een nieuwe reactie geeft met behulp van het:

try:
    with open(filename) as f:
        sequences = pick_lines(f)
except FileNotFoundError:
    print("File not found. Check the path variable and filename")
    exit()

Antwoord 5, Autoriteit 7%

Mogelijk moet u uw pad wijzigen door:

import os
path=os.chdir(str('Here should be the path to your file')) #This command changes directory

Dit is wat tenminste voor mij werkte! Ik hoop dat het ook voor jou werkt!


Antwoord 6

Moeilijk om codevoorbeelden in de opmerkingen te geven.

Om de woorden in het bestand te lezen, kunt u de inhoud van het bestand lezen, waardoor u een string krijgt – dit is wat u eerder aan het doen was, met de Read () -methode – en vervolgens Split () gebruiken om de individuele woorden.
Split breekt een tekenreeks op de verstrekte scheidingsteken of op WhiteSpace. Bijvoorbeeld,

"the quick brown fox".split()

produceert

['the', 'quick', 'brown', 'fox']

Evenzo,

fileScan.read().split()

geeft u een scala aan snaren.
Hoop dat dat helpt!


Antwoord 7

De fout die ik deed was
Mijn code:

x = open(‘python.txt’)

print(x)

Maar het probleem zat in de bestandsmap, ik heb het opgeslagen als python.txt in plaats van alleen als python.

Dus mijn bestandspad was
->C:\Users\noob\Desktop\Python\Course 2\python.txt.txt

Daarom gaf het een foutmelding.

Geef je bestand een naam zonder .txt, het wordt uitgevoerd.

Other episodes