python file not found error_File Not Found Error in Python

问题

I'm sure this has been answered before, but I couldn't find anything to help me...

I'm trying to write a simple program to read a file and search for a word then print how many times that word is found in the file. Well, every time I type in "test.rtf" (which is the name of my document) I get this error...

Traceback (most recent call last):

File "/Users/AshleyStallings/Documents/School Work/Computer Programming/Side Projects/How many? (Python).py", line 9, in

fileScan= open(fileName, 'r') #Opens file

FileNotFoundError: [Errno 2] No such file or directory: 'test.rtf'

In class last semester, I seem to remember my professor saying you have to save the file in a specific place? I'm not sure if he really said that though, but I'm running apple OSx if that helps. Haha

Here's my code, and any help is appreciated :) Thanks in advance!

print ("Hello! Welcome to the 'How many' program.")

fileName= input("Please enter the name of the file you'd like to use. Make \

sure to include the correct extension!") #Gets file name

fileScan= open(fileName, 'r') #Opens file

cont = "Yes"

accumulator = 0

while cont == "Yes":

word=input("Please enter the word you would like to scan for.") #Asks for word

capitalized= word.capitalize()

lowercase= word.lower()

print ("\n")

print ("\n") #making it pretty

print ("Searching...")

for word in fileScan.read(): #checking for word

accumulator += 1

print ("The word ", word, "is in the file ", accumlator, "times.")

cont = input ('Type "Yes" to check for another word or \

"No" to quit.') #deciding next step

cont = cont.capitalize()

if cont != "No" or cont != "Yes": #checking for valid input

print ("Invalid input.")

cont = input ('Type "Yes" to check for another word or \

"No" to quit.')

cont = cont.capitalize()

print ("Thanks for using How many!") #ending

回答1:

If the user does not pass the full path (On Unix type systems this means the path is starting with a slash) to the file, the path is interpreted relatively to the current working directory. The current working directory usually is the directory in which you started the program. In your case, the file test.rtf must be in the same directory in which you execute the program.

You are obviously performing programming tasks in Python under Mac OS. There, I recommend to work in the terminal (on the command line), i.e. start the terminal, cd to the directory where your input file is located and start the Python script there using the command

$ python script.py

In order to make this work, the directory containing the python executable must be in the PATH, a so-called environment variable that contains directories that are automatically used for searching executables when you enter a command. You should make use of this, because it simplifies daily work greatly. That way, you can simply cd to the directory containing your Python script file and run it.

In any case, if your Python script file and your data input file are not in the same directory, you always have to specify either a relative path between them or you have to use an absolute path for one of them.

回答2:

A good start would be validating the input. In other words, you can make sure that the user has indeed typed a correct path for a real existing file, like this:

import os

fileName = input("Please enter the name of the file you'd like to use.")

while (not os.path.isFile(fileName)) or (not os.path.exists(fileName)):

fileName = input("Whhoops! No such file! Please enter the name of the file you'd like to use.")

This is with a little help from the built in module os, That is a part of the Standard Python Library.

回答3:

Is test.rtf located in the same directory you're in when you run this?

If not, you'll need to provide the full path to that file.

Suppose it's located in

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

In that case you'd enter

data/test.rtf

as your file name

Or it could be in

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

In that case you'd enter

../some_other_folder/test.rtf

回答4:

Difficult to give code examples in the comments.

To read the words in the file, you can read the contents of the file, which gets you a string - this is what you were doing before, with the read() method - and then use split() to get the individual words.

Split breaks up a String on the delimiter provided, or on whitespace by default. For example,

"the quick brown fox".split()

produces

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

Similarly,

fileScan.read().split()

will give you an array of Strings.

Hope that helps!

回答5:

As noted above the problem is in specifying the path to your file.

The default path in OS X is your home directory (/Users/macbook represented by ~ in terminal ...you can change or rename the home directory with the advanced options in System Preferences > Users & Groups).

Or you can specify the path from the drive to your file in the filename:

path = "/Users/macbook/Documents/MyPython/"

myFile = path + fileName

You can also catch the File Not Found Error and give another response using try:

try:

with open(filename) as f:

sequences = pick_lines(f)

except FileNotFoundError:

print("File not found. Check the path variable and filename")

exit()

来源:https://stackoverflow.com/questions/17658856/file-not-found-error-in-python

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值