首页 > 解决方案 > Windows 上令人费解的 FileNotFoundError

问题描述

坦率地说,我遇到的问题令人困惑。我正在做一些 python 编码,第二天回来,没有改变任何东西,代码停止工作,给出一个FileNotFoundError. 我已经将它缩减为一个可笑的简单的最小代码来产生错误。

f = open('positions.tsv','w')

产生错误

Traceback (most recent call last):
  File "c:/Users/mrhel/Documents/GitHub/gas-collisions/test.py", line 1, in <module>
    f = open('positions.tsv','w')
FileNotFoundError: [Errno 2] No such file or directory: 'positions.tsv'

我已经在互联网上搜索了几个小时以寻求解决方案,但我遇到的一切都是有人试图在不存在的文件夹中创建文件或忘记将模式设置为'w'. 我将发生这种情况的确切代码复制到 Linux 机器上,它运行得很好,它特别不适用于我的 Windows 10 机器。

我试过重启电脑,也不管用。为什么这行简单的代码不能在 Windows 上运行?

编辑:
我如何运行代码是python test.py或者C:/Users/mrhel/AppData/Local/Microsoft/WindowsApps/python3.8.exe c:/Users/mrhel/Documents/GitHub/gas-collisions/test.py

在任何情况下,根据open() 文档 的预期行为positions.tsv应该是在使用'w'模式调用此函数时创建的。

当我提前创建文件时,当我尝试写入文件时出现错误。

f = open('positions.tsv','w')
f.write('testing')
f.close()

错误:

OSError: [Errno 9] Bad file descriptor

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:/Users/mrhel/Documents/GitHub/gas-collisions/test.py", line 3, in <module>
    f.close()
OSError: [Errno 9] Bad file descriptor

编辑2:我尝试创建一个文件并读取它,并且按预期工作。它是专门写的,不起作用

编辑3:所以因为它在另一个文件夹中运行,我决定检查写权限,这就是我得到的。当我用 windows 检查文件夹的属性时,所有用户都允许勾选。

>>> os.access('my_folder', os.W_OK)
False

这显然是一个权限问题,但我不知道如何纠正它。

标签: pythonwindows

解决方案


事实证明,这是 Windows Defender 勒索软件保护中“受控文件夹访问”的结果。关闭此功能可使其按预期运行。目前尚不清楚勒索软件保护如何决定我的代码不可信,但为了后代,这就是如何解决的。


推荐阅读