【问题标题】:python FileNotFoundErrorpython FileNotFoundError
【发布时间】:2015-08-31 00:07:32
【问题描述】:

我正在编写一个程序,它在程序开始时使用 open() 函数访问一个 .txt 文件。它在 IDE 上运行时没有任何错误,从 IDE 运行时我也能够读取文本文件而没有任何问题。虽然当我从 Python Launcher 运行时,它抛出了“FileNotFoundError” 这是我的代码:

directions_object = open('warcards_directions.txt','r')

【问题讨论】:

  • os.getcwd() 不同。相对文件名是相对于 CWD 解析的。

标签: python text-files filenotfoundexception


【解决方案1】:

Dan D 的进一步评论.. 试着把它放在你的 open() 调用前面:

 from os.path import abspath
 print(abspath('warcards_directions.txt'))

您会看到 python 在不同的地方查找,具体取决于您从哪里运行它.. 因为它查找与当前工作目录相关的文件,这取决于您运行 python 的方式。

这是新手的常见问题。有关一些解决方案,请参阅此处How to import files in python using sys.path.append?(请注意,该帖子中的潜在问题与此问题相同。他们正在尝试导入文件,而我们在这里尝试打开一个文件这一事实并不太重要) .

另外我要补充一点,我经常引用与脚本本身相关的东西......就像这样:

from os.path import abspath, join, dirname

script_dir = dirname(__file__)
txt_path = abspath(join(script_dir, "..", "path", "to", "warcards_directions.txt"))

如果您的 txt 文件和 python 脚本相对于彼此位于相同的位置(但可能安装在不同的位置),则此方法有效。

例如以上假设您的脚本位于 C:\Foo\scripts\script.py 中,而您的文本文件位于 C:\Foo\path\to\warcards_directions.txt 中。上面的方法在你运行脚本的任何地方都可以正常工作,如果你移动或重命名 C:\Foo 目录(例如到 C:\Program Files\Bar),它就会工作。但是,如果您决定将 scripts.py 向下移动到 C:\Foo 目录中(此时您更改 txt_path 的初始化方式以修复),它将中断。

【讨论】:

    【解决方案2】:

    你说的“python启动器”是指命令行吗?

    python myScript.py
    

    如果是这样,您需要先 cd 进入文件所在的目录,然后才能执行脚本。否则,请在脚本中提供 txt 文件的完整路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多