2012-07-31 67 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