我想创建一个文件并在python中写一些整数数据.例如,我有一个变量abc = 3,我试图将它写入一个文件(它不存在,我假设python将自己创建):
fout = open("newfile.dat", "w")
fout.write(abc)
Run Code Online (Sandbox Code Playgroud)
首先,python会自己创建一个newfile.dat吗?其次,它给了我这个错误:
IOError: [Errno 13] Permission denied: 'newfile.dat'
Run Code Online (Sandbox Code Playgroud)
这有什么不对?
我在使用 cmd(windows 命令行)时遇到了同样的问题
C:\Windows\System32> "G:\my folder\myProgram.py"
Run Code Online (Sandbox Code Playgroud)
在 python 文件中的位置是这样的
myfile = open('myOutput.txt', 'w')
Run Code Online (Sandbox Code Playgroud)
错误是当你不使用完整路径时,python 会使用你当前的目录,因为 cmd 上的默认目录是
C:\Windows\System32
Run Code Online (Sandbox Code Playgroud)
这行不通,因为它似乎被写保护,需要管理员的许可和确认
相反,您应该使用完整路径,例如:
myfile = open('G:\my folder\myOutput.txt', 'w')
Run Code Online (Sandbox Code Playgroud)
当您尝试创建与目录同名的文件时,也会发生这种情况:
import os
conflict = 'conflict'
# Create a directory with a given name
try:
os.makedirs(conflict)
except OSError:
if not os.path.isdir(conflict):
raise
# Attempt to create a file with the same name
file = open(conflict, 'w+')
Run Code Online (Sandbox Code Playgroud)
结果:
IOError: [Errno 13] Permission denied: 'conflict'
Run Code Online (Sandbox Code Playgroud)
小智 6
我用 IDLE3.8(python 3.8.0) 编写 python 脚本我已经解决了这个问题:如果路径是,
shelve.open('C:\\database.dat')
它将是
PermissionError: [Errno 13] Permission denied: 'C:\\database.dat.dat'. 但是当我测试将路径设置为
shelve.open('E:\\database.dat')
那就可以了!!!然后我测试我电脑上的所有驱动器(例如C,D,F...),仅当路径设置在磁盘中时
C:\\
将收到权限被拒绝错误。所以我认为这是Windows中的一个保护路径,以避免python脚本更改或读取系统磁盘(C盘)中的文件
回答你的第一个问题:是的,如果该文件不存在,Python 将创建它。
其次,运行 python 脚本的用户(您自己)没有在目录中创建文件的写入权限。