Python &引用;没有这样的文件或目录;当文件位于同一目录中时

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 其他人以前也有过这种情况吗?仅仅因为文件与脚本位于同一文件夹

这两个文件都是.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

其他人以前也有过这种情况吗?

仅仅因为文件与脚本位于同一文件夹中,并不意味着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()
的工作目录没有任何影响。