33

我想创建一个文件并在 python 中写入一些整数数据。例如,我有一个变量 abc = 3,我试图将它写入一个文件(该文件不存在,我假设 python 会自行创建它):

fout = open("newfile.dat", "w")
fout.write(abc)

首先,python 会自己创建一个 newfile.dat 吗?其次,它给了我这个错误:

IOError: [Errno 13] Permission denied: 'newfile.dat'

这里有什么问题?

4

9 回答 9

20

如果文件在您的计算机上仍然打开,请关闭该文件,然后尝试运行 python 代码。我希望它有效

于 2015-07-28T22:33:23.860 回答
14

当您尝试创建与目录同名的文件时,也会发生这种情况:

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+')

结果:

IOError: [Errno 13] Permission denied: 'conflict'
于 2016-11-18T14:55:14.087 回答
10

像这样使用 cmd(Windows 命令行)时遇到了同样的问题

C:\Windows\System32> "G:\my folder\myProgram.py"

在python文件里面像这样的地方

myfile = open('myOutput.txt', 'w')

错误是,当您不使用完整路径时,python 将使用您的当前目录,并且因为 cmd 上的默认目录是

C:\Windows\System32 

这不起作用,因为它似乎是写保护的,需要管理员的许可和确认

相反,您应该使用完整路径,例如:

myfile = open('G:\my folder\myOutput.txt', 'w')
于 2018-02-05T15:24:39.750 回答
8

权限被拒绝仅意味着系统无权将文件写入该文件夹。从终端使用“sudo chmod 777”授予文件夹权限并尝试运行它。它对我有用。

于 2019-05-16T05:38:05.957 回答
4

我用 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)中的文件

于 2019-11-17T12:34:35.823 回答
2

回答您的第一个问题:是的,如果文件不存在,Python 将创建它。

其次,运行 python 脚本的用户(您自己)没有在目录中创建文件的写入权限。

于 2013-08-30T09:23:04.457 回答
2

如果您通过终端执行 python 脚本 --user 以提供管理员权限。

为我工作!

如果您使用的是 Windows,请以管理员身份运行该文件。

如果您通过 cmd 执行,请以管理员身份运行 cmd 并执行 python 脚本。

于 2018-12-21T17:50:12.343 回答
2

为了使用 Python 脚本写入文件,您必须先创建一个文本文件。示例 应该存在 C:/logs/logs.txt 等文件。只有这样,以下代码才有效:

logfile=open(r"C:/logs/logs.txt",'w')

所以总结。

  1. 文本文件应存在于指定位置
  2. 确保在运行 Python 脚本之前关闭文件。
于 2019-10-09T07:36:15.073 回答
0

确保您对尝试按属性创建文件的目录具有写入权限

于 2013-08-30T09:28:28.740 回答