2011-01-19 18 views
2

私はこのコードを、特に.XMLファイルのロードを識別し、これらのファイルから座標を抽出するために作成しました。ここに私のコードは次のとおりです。IOError:[Errno 13]アクセス権が拒否されました:

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'  

は、私は間違いなく、このフォルダへのアクセス権を持っています!私はまた、空の新しいフォルダを作ってそこに1つの.xmlファイルを入れてみましたが、同じエラーが出ます!誰が何が間違っているか考えている人はいますか?

+0

TXT_EXTRACTION.PYスクリプトのどの行に32行が含まれているか教えてください。質問のテキストボックスにはそれほど多くの行がありません。 – mguillech

答えて

9

あなたが行を変更する必要が

tree = ET.parse(workspace) 

~

tree = ET.parse(filename) 

workspaceはディレクトリであり、parseメソッドはファイル名を使用するためです。

+1

これ。 'workspace'はディレクトリです。 – jonescb

+0

ブリリアント!ありがとうございました!出来た!! –

0

たぶん、あなただけの\の代わり/でファイルパスを記述する必要があります。

workspace = "D:\\J040083" 

あるいは、バックスラッシュは、生の文字列としてエスケープなし:

workspace = r"D:\J040083" 
+0

私はすべての組み合わせを試しました\\または/または//(ちょうどここでストローに挟んで!) –

+0

いいえ、まったく同じエラーです! –

+2

os.filesepの値を使用して、そのパスを構築します。 – Spaceghost

関連する問題