python - 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
这显然是一个权限问题,但我不知道如何纠正它。
解决方案
事实证明,这是 Windows Defender 勒索软件保护中“受控文件夹访问”的结果。关闭此功能可使其按预期运行。目前尚不清楚勒索软件保护如何决定我的代码不可信,但为了后代,这就是如何解决的。
推荐阅读
- c++ - 如何在约束中使用 ADL?
- java - 使用 Java 的 StreamLabs 套接字 API
- wpf - MVVM / PRISM:对话框字符串应该存储在哪里?
- mysql - 在 Debian 操作系统上设置 WIki。安装后配置有问题
- java - 具有排序数组列表的最小优先级队列插入实现
- vue.js - Nuxtjs data() 变量不能改变
- ios - 刷新后停止 Diffable Data Source 滚动到顶部
- reactjs - InfoWindow 正在使用 react-google-maps 显示两个信息窗口
- python - 如何根据值更新字典键?
- sql - 如何在 fetch 中进行 fetch?