【问题标题】:open() - Opening a file created via UI vs. via Consoleopen() - 打开通过 UI 与通过控制台创建的文件
【发布时间】:2020-04-24 19:45:50
【问题描述】:

我正在启动 Python,这是我关于 Stack Overflow 的第一个问题。 我最近在处理一些文件,在尝试打开文件进行测试时遇到了错误。

f = open("fi.txt", "r")

问题是,我总是遇到这样的错误:

Traceback (most recent call last):
File "C:\Users\USER\OneDrive\Documents\Python\Beginner\FileHandle2.py", line 9, in <module>
f = open("fi.txt", 'r')
FileNotFoundError: [Errno 2] No such file or directory: 'fi.txt'

已指定路径(通过 sys.path)。 该文件存在,它与我的 Python 脚本(即 FileHandle2.py)位于同一文件夹中。 我不明白我在这里做错了什么,如果有人能给我一些提示吗?

此外,当我执行以下操作时:

with open("fi2.txt",'w',encoding = 'utf-8') as f:
   f.write("my first file\n")

文件“fi2.txt”已在我的文件夹中正确创建,我可以在执行时调用它而不会出错:

f = open("testy.txt", 'r')

因此,我想知道发生了什么? “fi.txt”是使用 UI 创建的(在 Windows 10 中,右键单击 > 新建 > 文本文档),而“fi2.txt”是通过 Python 控制台创建的。

到目前为止,我知道该怎么做,但我想对这种行为做出解释。 谢谢大家!

【问题讨论】:

  • 我会在执行时查看 python 的当前工作目录。 import os print(os.getccwd()) 然后确保您的文件位于正确的位置 print(os.listdir(os.getcwd()))
  • Python 仅在 import 期间使用 sys.path 定位 .py 模块,而不用于任意数据文件。您需要指定文件的完整路径或更改当前工作目录,使其成为文件所在的目录。
  • 谢谢两位的回答! LazyScripter,我确实检查了这个命令来打印当前工作目录,我确实在我的 fi.txt 和我的 Python 文件所在的正确目录中。 Martineau,我还以不同的方式指定了完整路径,使用双 \\、单 \\,甚至是 / 和 // 的另一种方式,但找不到解决方案。
  • 由于我在Python中创建文件并稍后打开它时它正在工作,所以我的这个问题并不是真正的紧急情况,希望以后不会卡住我。

标签: python function file


【解决方案1】:

我找到了原因,这真的很愚蠢。 在 Windows 10 上创建文本文件时,实际上不需要添加 .txt 扩展名,Windows 10 会自动添加它。此外,文本文件也不会显示扩展名。

我很习惯自己输入扩展名,所以我从不注意我正在制作的文本文件。

基本上,在 VS Code 上,我的文件名是:

fi.txt.txt

【讨论】:

    猜你喜欢
    • 2012-04-14
    • 2015-07-29
    • 2012-01-23
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    相关资源
    最近更新 更多