Python &引用;没有这样的文件或目录;当文件位于同一目录中时
这两个文件都是.py文件和它调用的.txt文件Python &引用;没有这样的文件或目录;当文件位于同一目录中时,python,working-directory,Python,Working Directory,这两个文件都是.py文件和它调用的.txt文件 champions_list = open('champions.txt','rU').read().split('\n') 位于文件夹C:\Users\[My Name]\Programming\[file Name]中 我通过命令提示符调用.py文件,它返回错误 IOError: [Errno 2] No such file or directory: champions.txt 其他人以前也有过这种情况吗?仅仅因为文件与脚本位于同一文件夹
champions_list = open('champions.txt','rU').read().split('\n')
位于文件夹C:\Users\[My Name]\Programming\[file Name]
中
我通过命令提示符调用.py文件,它返回错误
IOError: [Errno 2] No such file or directory: champions.txt
其他人以前也有过这种情况吗?仅仅因为文件与脚本位于同一文件夹中,并不意味着python解释器知道文件在那里。它正在
cwd
中查找文件。你可以:
- 尝试使用文件的完整绝对路径;或
- 使用
os.path.append添加包含文件的目录
open('champions.txt')
打开文件时,操作系统希望在当前目录中找到champions.txt
文件。当前目录是启动程序的命令提示符窗口的目录。这与存储Python脚本的目录(不一定)不同
您可以通过执行以下操作来解决此问题:
import os
import sys
open(os.path.join(os.path.dirname(sys.argv[0]), 'champions.txt')
这将获取sys.argv[0]
中脚本的全名,获取目录部分,然后将其加入到所需的文件名中。这将打开脚本目录中的文件,而不是当前目录
(请注意,以这种方式使用
sys.argv[0]
依赖于操作系统,可以在Windows上工作,但在其他系统上可能不一样。)有什么奇怪的open('file.txt')
在当前目录中查找文件,而不是在脚本目录中。确定没有拼错文件名吗?确保它们没有差异。重新启动我的计算机,它就工作了。不知道发生了什么…我认为最好使用\uuuu file\uuuu
而不是sys.argv[0]
,因为sys.argv[0]
可以relative@Elisha:当然可以,但无论如何它都是相对于当前目录的,这是OP查找数据文件所需的。最好包装sys.argv[0]os.path.abspath
中的
正确,但当用户使用运行此脚本运行其他脚本时,仍然可能出现问题。如果您希望它与文件相关,而不是与用户运行它的方式相关,我认为\uuu file\uuu
更好没有os.path.append这样的东西。也许您的意思是sys.path
,但这只与模块搜索路径相关,它对open()
的工作目录没有任何影响。