创建要写入文件的列表错误列表索引超出范围

时间:2015-12-16 12:07:23

标签: python

我正在创建一个文件名列表。

IsMeasureValid

然后为文件路径创建另一个列表。

self.hostTestFiles = ["hostTest1_ms.dat","hostTest2_ms.dat","hostTest3_ms.dat","hostTest4_ms.dat",
                          "hostTest5_ms.dat", "hostTest6_ms.dat","hostTest7_ms.dat","hostTest8_ms.dat",
                          "hostTest9_ms.dat","hostTest10_ms.dat"]

我有一个将随机数据写入每个文件的函数,但它表示列表索引超出范围

self.hostFilePaths = []

for i in self.hostFilePaths:
        os.path.join(self.hostFolder, self.hostTestFiles[i])

然后我想将这些文件从我的电脑复制到usb并在usb上重命名,但这似乎也不起作用。 谁能指出我哪里出错?

def createFile (self):
    print "creating file"
    for item in self.hostFilePaths:
        with open(item, 'wb') as fout:
            fout.write(os.urandom(10567))
            fout.flush()
            os.fsync(fout.fileno())

1 个答案:

答案 0 :(得分:2)

您对python for如何工作的理解有点缺乏。

for i in self.hostFilePaths:
    os.path.join(self.hostFolder, self.hostTestFiles[i])

不会使用self.hostFilePaths操作的结果填充os.path.join,它会保持为空并导致索引超出范围错误。它应该读

for i in self.hostTestFiles:
    self.hostFilePaths.append(os.path.join(self.hostFolder, i))

或者,更多pythonic,你可以用列表理解来做到这一点。

self.hostFilePaths = [ os.path.join(self.hostFolder, i) for i in self.hostTestFiles ]

你在创建usb文件列表时犯了同样的错误。