python - Errno 13 打开时,即使启用了权限
问题描述
我正在学习 python 3,并且正在学习如何使用内置 open() 函数的教程。我在 Windows 10 上使用 python 3.8。
我在运行下面的代码时遇到的问题是它表现得好像我没有对该文件的权限。我已经检查并确保我在文件夹中拥有完全权限(这在 Errno 13 的许多情况下似乎是问题所在)。
我的python脚本:
file = open("sample.txt","w")
file.write('Hello World')
file.write('This is written using Python')
file.close()
我在控制台中遇到的错误(省略了完整的文件路径):
Traceback (most recent call last):
File "C:\....movement.py", line 3, in <module>
file = open("sample.txt","w")
PermissionError: [Errno 13] Permission denied: 'sample.txt'
一些额外的细节:
- 文本文件是空白的(我打算写给它)
- 我已经确定包含脚本和文本文件的文件夹不是只读的
任何帮助,将不胜感激 :)
更新 1 试过:
- 文本文件和包含文件夹已关闭
- 使用命令行创建文本文件
更新 2 看起来我的当前目录是错误的 (C:\Program Files\Notepad++) 有没有办法在 python 脚本本身中设置路径,或者我应该深入研究 Notepad++ 设置?
解决方案
好的,这是一个修复:
import os
import pathlib
print(os.getcwd())
#Get the path to this script
path = (pathlib.Path(__file__).parent.absolute())
#Change the path to the correct one
os.chdir(path)
print(os.getcwd())
将上述代码添加到脚本的开头会更改脚本文件所在位置的路径。这解决了权限问题并允许 python 正确使用 open()。
感谢所有帮助我解决这个问题的人!
推荐阅读
- glfw - 测试 glfwSetErrorCallback(...)
- elasticsearch - grok 过滤器从消息字段中选择特定单词
- wpf - Robot Framework IDE 自动化 WPF
- ruby-on-rails - 使用 Rails 乘客时出错
- python - 如何在 keras Sequntial 模型中使用来自 doc2vec 的句子向量进行句子情感分析?
- java - Spring JPA 从 where 子句中选择
- laravel - Redis + Docker:PDOException:找不到驱动程序
- php - 使用一个 Webroot 并按 ID 区分子域
- javascript - 使用 Controller As 更新回调中的属性
- javascript - 后面代码中的 Javascript 警报