为什么我会收到 FileNotFoundError?[重复]
- 2025-02-08 08:46:00
- admin 原创
- 59
问题描述:
我正在尝试编写一个简单的程序来读取文件并搜索单词,然后打印该单词在文件中出现的次数。每次我输入“test.rtf”(这是我的文档的名称)时,都会出现此错误:
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'
我记得上学期上课时,教授说过必须将文件保存在特定位置?我不确定他是否真的这么说过,但如果有帮助的话,我正在运行 Apple OSx。
这是我的代码的重要部分:
fileName= input("Please enter the name of the file you'd like to use.")
fileScan= open(fileName, 'r') #Opens file
解决方案 1:
如果用户没有传递文件的完整路径(在 Unix 类型的系统中,这意味着以斜杠开头的路径),则该路径将相对于当前工作目录进行解释。当前工作目录通常是您启动程序的目录。对于您来说,文件test.rtf
必须位于您执行程序的同一目录中。
您显然是在 Mac OS 下使用 Python 执行编程任务。在那里,我建议在终端(在命令行上)中工作,即启动终端,cd
进入输入文件所在的目录,然后使用命令启动 Python 脚本
$ python script.py
为了实现这一点,包含 Python 可执行文件的目录必须位于 PATH 中,PATH 是一个所谓的环境变量,其中包含输入命令时自动用于搜索可执行文件的目录。您应该利用这一点,因为它大大简化了日常工作。这样,您就可以简单地cd
转到包含 Python 脚本文件的目录并运行它。
无论如何,如果您的 Python 脚本文件和数据输入文件不在同一个目录中,您始终必须在它们之间指定相对路径,或者必须对其中一个使用绝对路径。
解决方案 2:
如上所述,问题在于指定文件路径。OS X 中的默认路径是您的主目录(/Users/macbook 在终端中用 ~ 表示...您可以使用“系统偏好设置”>“用户和组”中的高级选项更改或重命名主目录)。
或者您可以在文件名中指定从驱动器到文件的路径:
path = "/Users/macbook/Documents/MyPython/"
myFile = path + fileName
您还可以捕获文件未找到错误并使用 try 给出另一个响应:
try:
with open(filename) as f:
sequences = pick_lines(f)
except FileNotFoundError:
print("File not found. Check the path variable and filename")
exit()
解决方案 3:
一个好的开始是验证输入。换句话说,你可以确保用户确实为真实存在的文件输入了正确的路径,如下所示:
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.")
这是借助内置模块os实现的,它是标准 Python 库的一部分。
解决方案 4:
是否test.rtf
位于您运行此程序时所在的同一目录中?
如果没有,您需要提供该文件的完整路径。
假设它位于
/Users/AshleyStallings/Documents/School Work/Computer Programming/Side Projects/data
在这种情况下,你可以输入
data/test.rtf
作为文件名
或者可能是
/Users/AshleyStallings/Documents/School Work/Computer Programming/some_other_folder
在这种情况下,你可以输入
../some_other_folder/test.rtf
解决方案 5:
您可能需要通过以下方式更改路径:
import os
path=os.chdir(str('Here_should_be_the_path_to_your_file')) #This command changes directory
至少对我来说这是有效的!希望它对你也有用!
解决方案 6:
很难在评论中给出代码示例。
要读取文件中的单词,您可以读取文件的内容,这将获得一个字符串 - 这是您之前使用 read() 方法所做的 - 然后使用 split() 获取单个单词。Split 会根据提供的分隔符(默认情况下为空格)拆分字符串。例如,
"the quick brown fox".split()
生产
['the', 'quick', 'brown', 'fox']
相似地,
fileScan.read().split()
将返回一个字符串数组。希望对您有所帮助!
解决方案 7:
首先检查你的文件格式是什么(例如:.txt,.json,.csv等),
如果您的文件存在于 PWD 中,则只需提供文件的名称以及单引号('')或双引号(“”)内的文件格式以及根据您的要求提供的适当的操作模式
例如:
with open('test.txt','r') as f: data=f.readlines() for i in data: print(i)
如果您的文件存在于其他目录中,则只需提供文件所在的完整路径名和文件名以及单引号('')或双引号(“”)内的文件格式以及根据您的要求的适当的操作模式。
如果显示 unicode 错误,只需在文件路径的引号前放置 r,或者将 '' 替换为 '/'
with open(r'C:UserssomanDesktop est.txt','r') as f: data=f.readlines() for i in data: print(i)
解决方案 8:
我犯的错误是我的代码:
x = open('python.txt')
print(x)
但问题出在文件目录中,我将其保存为 python.txt 而不是 python。
所以我的文件路径是 ->C:\Users\noob\Desktop\Python\Course 2\python.txt.txt
这就是它出现错误的原因。
将文件命名为不带.txt 的文件名,它将运行。