【问题标题】:FileNotFoundError: [Errno 2]FileNotFoundError:[Errno 2]
【发布时间】:2014-11-13 12:08:00
【问题描述】:

简介: 如何在 Python 中读取文件? 为什么必须这样做?

我的问题是我收到以下错误:

Traceback (most recent call last):
  File "C:\Users\Terminal\Desktop\wkspc\filetesting.py", line 1, in <module>
    testFile=open("test.txt")
FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'

源自以下代码:(即整个 '.py' 文件)

testFile=open("test.txt")
print(testFile.read())

“test.txt”与我的程序在同一个文件夹中。我是 Python 新手,不明白为什么会出现文件位置错误。我想知道修复以及为什么必须以这种方式进行修复。

我尝试使用文件的绝对路径“C:\Users\Terminal\Desktop\wkspc\test.txt”

其他细节:

"Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:38:22) [MSC v.1600 32 bit (Intel)] on win32"
Windows 7, 32 Bit

【问题讨论】:

  • 似乎由不同的原因引起。 1. 使用"test.txt",如何调用你的python脚本? 2. 对于使用完整路径,您是否避免转义字符(例如,使用r"C:\Users\Terminal\Desktop\wkspc\test.txt" 注意r
  • 你能告诉我们你用你的脚本启动 python 的命令吗?
  • 如果您想使用 Python 从与 Python 脚本相同的目录中加载 test.txt,您需要在启动 Python 时位于该目录中。我唯一的猜测是您正在从其他地方启动 python 脚本
  • 我启动了随 Python 一起安装的“IDLE (Pytho GUI)”,然后我从那里打开我的程序并运行它。 (文件->打开->等)

标签: python python-3.x file-io


【解决方案1】:

由于您使用的是 IDLE(GUI),因此可能无法从脚本所在的目录启动脚本。我认为最好的选择是使用类似的东西:

import os.path

scriptpath = os.path.dirname(__file__)
filename = os.path.join(scriptpath, 'test.txt')
testFile=open(filename)
print(testFile.read())

os.path.dirname(__file__) 将找到当前运行的脚本所在的目录。然后它使用os.path.jointest.txt 前面加上该路径。

如果这不起作用,那么我只能猜测test.txt 实际上与您正在运行的脚本不在同一目录中。

【讨论】:

  • 这行得通,谢谢!希望一旦我受过更多教育,我就可以摆脱这个修复。
  • 通常您指定文件名的完整路径,如 starrify 提到的(他们建议的也可以),这样就可以解决问题。无论脚本如何启动以及从何处(不同的路径)启动,此代码都将起作用。
猜你喜欢
  • 2019-08-06
  • 1970-01-01
  • 2019-09-20
  • 2020-11-08
  • 2020-09-15
  • 1970-01-01
  • 2019-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多