【问题标题】:IOError: [Errno 13] Permission denied error after running the scriptIOError:[Errno 13] 运行脚本后权限被拒绝错误
【发布时间】:2019-08-05 14:03:18
【问题描述】:

在运行实际上将几个值从一个 XML 替换为另一个 XML 的 python 脚本后,我看到 IOError: [Errno 13] Permission denied 错误:

实际代码:

import os
from xml.etree.ElementTree import ElementTree
tree = ElementTree()
UN=(os.environ.get('UserProfile'))
actual = ("C:/Users/sam/Documents/hardware_settings_config.xml")
tree.parse ("C:/Users/sam/Documents/hardware_settings_config.xml")
root = tree.getroot()
ID=(root.attrib['MACID'])
tree.parse ("D:/LowSettings/hardware_settings_config.xml")
root = tree.getroot()
root.attrib['MACID'] = ID
tree.write('D:/LowSettings/hardware_settings_config.xml', xml_declaration=True)

import xml.etree.ElementTree as ET
tree = ET.parse("C:/Users/sam/Documents/hardware_settings_config.xml")
root = tree.getroot()
for child in root.findall('opu'): 
    for sub_c in child:
        print (sub_c.attrib)

tree = ET.parse('D:/LowSettings/hardware_settings_config.xml')

root = tree.getroot()
for child in root.findall('opu'):
    if child.find('Strategy') is None:
        new=ET.SubElement(child,'Strategy')
        for key, value in CID.items():
            new.set(key, value)

tree.write("D:/LowSettings/hardware_settings_config.xml", xml_declaration=True)

错误:

Traceback (most recent call last):
  File "C:\Users\sam\Music\ProfileGen.py", line 13, in <module>
    tree.write('D:/LowSettings/hardware_settings_config.xml', xml_declaration=True)
  File "C:\Python27\lib\xml\etree\ElementTree.py", line 797, in write
    file = open(file_or_filename, "wb")
IOError: [Errno 13] Permission denied: 'D:/LowSettings/hardware_settings_config.xml'

感谢任何帮助,谢谢!

【问题讨论】:

  • 您的脚本是否有权访问该目录中的文件?
  • 抱歉,如何授予权限?
  • 你能在这里显示D:/DirtRally2/LowSettings/hardware_settings_config.xml 的输出吗:superuser.com/a/364085/524521
  • @Learner9 你是如何运行你的脚本的?更改权限的命令因您使用的是 Windows/Linux/Mac 而异
  • 在 win10 上运行并从 IDLE 执行脚本。

标签: python


【解决方案1】:

这里的错误表示无法打开文件D:/LowSettings/hardware_settings_config.xml进行写入。出现这种情况的原因有多种,您需要检查它们。

  • 目录D:/LowSettings 是否存在? (调用open() 不会创建目录)
  • Windows 权限是否允许您写入该目录? (使用 idle 创建一个新文件,并尝试将其保存到 D:/LowSettings 的另一个名称。)
  • 是否已经存在同名的文件?如果存在可以删除吗? (删除文件表明它没有被其他进程锁定。)
  • 你能用编辑器创建一个名为D:/LowSettings/hardware_settings_config.xml 的文件吗? (使用 idle 创建一个新文件,这次保存为您的目标名称。请注意,您必须在尝试删除文件之后执行此步骤,因为在大多数编辑器中打开文件会锁定它 -不确定是否特别空闲。)

如果您无法成功通过所有这些检查,请尝试从 Python 命令行以交互方式打开文件。

如果所有其他方法都失败,请重新启动 Windows(这会清除操作系统级别的数据结构,如今这些数据结构通常不会导致此类问题,但我没有想法,重新启动不会造成伤害。)

【讨论】:

    猜你喜欢
    • 2011-06-11
    • 2013-05-02
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多