我正在创建一个文件名列表。
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())
答案 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文件列表时犯了同样的错误。