IOError: [Errno 13] 权限被拒绝:

3

我编写了这段代码,专门用于识别一堆.XML文件,并从这些文件中提取坐标。以下是我的代码:

from xml.etree import ElementTree as ET
import sys, string, os, arcgisscripting
gp = arcgisscripting.create(9.3)

workspace = "D:/J040083"
gp.workspace = workspace

for root, dirs, filenames in os.walk(workspace): # returms root, dirs, and files
    for filename in filenames:
        filename_split = os.path.splitext(filename) # filename and extensionname (extension in [1])
        filename_zero = filename_split[0]
        extension = str.upper(filename_split[1])

        try:
            first_2_letters = str.upper(filename_zero[0] + filename_zero[1])
        except:
            first_2_letters = "XX"

        if first_2_letters == "LI" and extension == ".XML":
            tree = ET.parse(workspace)
            print tree.find('//{http://www.opengis.net/gml}lowerCorner').text
            print tree.find('//{http://www.opengis.net/gml}upperCorner').text

我遇到了一个错误:

Message File Name   Line    Position    
Traceback               
    <module>    D:\J040083\TXT_EXTRACTION.py    32      
    parse   C:\Python25\Lib\xml\etree\ElementTree.py    862     
    parse   C:\Python25\Lib\xml\etree\ElementTree.py    579     
IOError: [Errno 13] Permission denied: 'D:/J040083'     

我肯定可以访问这个文件夹!我还尝试创建新的、空的文件夹,并将一个 .xml 文件放在其中,但是我仍然收到相同的错误提示!有人知道出了什么问题吗?


你能告诉我们 TXT_EXTRACTION.PY 脚本的第32行包含了什么吗?问题中的文本框并没有那么多行。 - mguillech
2个回答

11

你需要修改这行代码

tree = ET.parse(workspace)

to

tree = ET.parse(filename)

因为工作空间是一个目录,而解析方法需要一个文件名。

0

也许你只需要使用\而不是/来编写文件路径:

workspace = "D:\\J040083"

或者,作为原始字符串而不使用反斜杠转义:

workspace = r"D:\J040083"

我已经尝试了所有的 \ 或 /,甚至是 //(只是在这里抓瞎!)的组合。 - Alice Duff
2
使用 os.filesep 的值来构建该路径。 - Spaceghost

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接