在Python中写入文件时,权限被拒绝错误

时间:2013-08-30 09:21:34

标签: python

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

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

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

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

这里有什么问题?

9 个答案:

答案 0 :(得分:5)

Please close the file if its still open on your computer, then try running the python code. I hope it works

答案 1 :(得分:4)

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

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'

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

我使用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')

答案 4 :(得分:1)

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

为我工作!

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

如果通过cmd执行,请以admin身份运行cmd并执行python脚本。

答案 7 :(得分:0)

权限被拒绝仅表示系统没有权限将该文件写入该文件夹。从终端使用“ sudo chmod 777”授予该文件夹权限,然后尝试运行它。它对我有用。

答案 8 :(得分:0)

要使用Python脚本在文件上进行写入,必须首先创建一个文本文件。 示例应该存在诸如C:/logs/logs.txt之类的文件。 只有这样,以下代码才能起作用:

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

总结。

  
      
  1. 文本文件应位于指定位置
  2.   
  3. 确保在运行Python脚本之前关闭文件。
  4.