Python etree xml写问题

时间:2012-07-31 20:33:33

标签: python xml elementtree

我正在尝试将多个文件写入目录,每个文件之间的变化很小(例如,增量ID号)当我尝试运行我的程序时,它在写了大约5个文件后失败了。但是,当我再次尝试并重新选择源文件时,它可以工作。这是我的代码:

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 个答案:

答案 0 :(得分:1)

首先,使用os.path.join,它会让您的生活更轻松。

在我看来,strftime的第一次和最后一次调用是在不同的时间发生的(你在第一次调用中省略了下划线)。该脚本找不到该目录,因为它不存在。一个人可能会在几秒钟之前命名,甚至可疑,我敢打赌。

尝试用

替换您的第一个if语句
dirname = os.path.join(self.fDirectory,strftime("AutoGen%Y-%m-%d_%H.%M.%S",gmtime()))

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

和最后一行:

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