2012-07-31 92 views
1

我試圖寫入多個文件到每個文件之間變化很小的目錄(例如增量id號碼)當我嘗試運行我的程序時,寫入大約5個文件後失敗。但是,當我再次嘗試並重新選擇源文件時,它可以正常工作。這裏是我的代碼:Python etree xml寫入問題

if not os.path.isdir(self.fDirectory + "/AutoGen" + strftime("%Y-%m-%d %H:%M:%S",   gmtime())): 
     os.mkdir(self.fDirectory + "/AutoGen" + strftime("%Y-%m-%d_%H.%M.%S", gmtime())) 

    anum = 0 
    for x in range(len(self.csvdata)-1): 
     for y in range(len(self.csvdata[x+1])): 
      self.myRoot.find(self.csvdata[0][y]).text = self.csvdata[x][y] 
     anum+=1 
     myTree.write(self.fDirectory + "/AutoGen" + strftime("%Y-%m-%d_%H.%M.%S", gmtime()) + "/" + self.filename + "_" + str(anum) + ".xml") 

這裏就是我得到的錯誤:

Exception in Tkinter callback 
Traceback (most recent call last): 
File "C:\Python32\lib\tkinter\__init__.py", line 1399, in __call__ 
return self.func(*args) 
File "C:\Users\CNash\Documents\XML Generator\XMLGen.py", line 148, in doIt 
myTree.write(self.fDirectory + "/AutoGen" + strftime("%Y-%m-%d_%H.%M.%S", gmtime()) + "/" + self.filename + "_" + str(anum) + ".xml") 
File "C:\Python32\lib\xml\etree\ElementTree.py", line 836, in write 
file = open(file_or_filename, "wb") 
IOError: [Errno 2] No such file or directory: 'C:/Users/CNash/Documents/XML Generator/AutoGen2012-07-31_20.23.52/EXuTest_DOCD00140_6.xml' 

任何想法非常感謝!

+1

我很抱歉,但這個有沒有關係etree或XML。你似乎沒有提供Python的正確路徑寫入 – 2012-07-31 20:50:02

回答

1

首先,使用os.path.join,它會讓你的生活更輕鬆。

在我看來,strftime的第一個和最後一個電話發生在不同的時間(並且你在第一個電話中省略了下劃線)。該腳本找不到目錄,因爲它不存在。一個名字與幾秒鐘之前可能,甚至可疑,我敢打賭。

嘗試用

dirname = os.path.join(self.fDirectory,strftime("AutoGen%Y-%m-%d_%H.%M.%S",gmtime())) 

if not os.path.isdir(dirname): 
    os.mkdir(dirname) 

更換你的第一if語句來和最後一行有:

myTree.write(os.path.join(dirname, self.filename + "_" + str(anum) + ".xml")) 
+0

謝謝。這是完全合理的,我認爲這可能與此有關,但不知道足夠了解它。在你的代碼的末尾添加「)」,你的strftime需要使用句點,而不是用分號匹配windows路徑約定。現在它似乎完美地工作! – nashter 2012-07-31 20:53:59

+0

很高興我能幫到你。 – 2012-07-31 21:02:41