【问题标题】:Trying to read an entire file but getting [Errno 2] No such file or directory试图读取整个文件但得到 [Errno 2] No such file or directory
【发布时间】:2022-01-24 19:08:40
【问题描述】:

我已经看过很多关于这个问题的问题,但似乎没有一个能解决我的问题。

我目前正在学习 Python,并且正在测试从文件中读取。 当我尝试像这样读取整个文件时:

with open('pi_digits.txt') as file_object:
    contents = file_object.read()
print(contents)

即使我在同一目录中保存了一个名为“pi_digits.txt”的文件,也会弹出一条错误消息,说: FileNotFoundError: [Errno 2] No such file or directory: 'pi_digits.txt'

pi_digits.txt 文件只是一个包含 pi 前 12 位数字的文件。 现在我的问题是:为什么它会输出一个错误,指出 pi_digit.txt 不存在?

【问题讨论】:

  • 你是如何运行 Python 的?奇怪的是,当前工作目录与脚本目录不同(它只会在工作目录中查找pi_digits.txt)。解决方案是从脚本相对路径中读取,例如使用os.path.join(os.path.dirname(__file__), 'pi_digits.txt') 而不是'pi_digits.txt'
  • 为什么会输出一个错误,指出 pi_digit.txt 不存在? 因为该文件在当前目录中不存在。
  • 谢谢ShadowRanger,你的答案成功了!
  • 请务必注意,除非您明确提供 absolute 路径,否则 Python 解释器将始终将您提供的文件/路径视为 relative到你的当前目录。

标签: python visual-studio-code directory operating-system


【解决方案1】:

我建议在调用open 之前添加以下行,以查看当前目录是否在您认为的位置:

import os
print(os.getcwd())

我的猜测是,该语句会打印出您没有预料到的内容(例如,不包含名为 pi_digits.txt 的文件的目录)。如果没有,请发布您用于调用脚本的命令行、运行命令的目录,我们可以尝试进一步提供帮助。

【讨论】:

  • 除此之外,在我第一次学习编程的Windows中,由于Windows默认隐藏文件扩展名,我不小心将输入文件命名为file.txt.txt而不是file.txt
  • @merkman 是的,禁用该“功能”是我第一次登录 Windows 机器时总是做的第一件事。同样令人讨厌的是 Chrome 将协议隐藏在 URL 中。
猜你喜欢
  • 1970-01-01
  • 2016-06-07
  • 2017-07-05
  • 2018-11-20
  • 2018-07-24
  • 1970-01-01
  • 2020-11-09
  • 2019-03-25
  • 2022-01-24
相关资源
最近更新 更多