我有一个shell脚本,它将某个目录的文件管道化为标题为"list.txt"
的文件。
我正在尝试编写一个python脚本,该脚本读入list.txt
内的文件名,打开它们,并将其内容保存到列表中。 list.txt
内的每个文件在两个不同的行上包含两个数字。到目前为止,我已经能够在文件中读取目录中文件的名称,但是在尝试读取文件内容时我一直收到错误:
IndexError: list assignment index out of range
以下是我到目前为止编写的代码:
f = open("list.txt")
file = f.readlines()
f.close()
del file[0]
del file[0]
file = [w.replace('\n','') for w in file]
#print file
length_file = len(file)
data = []
for i in range(0,1):
fa = open(file[i])
# print fa
data[i] = fa.read()
fa.close()
data[i] = [t.replace('\n','') for t in data]
#print i
#print data
#print data[1]
错误发生在data[i] = fa.read()
行语句上。
非常感谢任何帮助!提前谢谢!
答案 0 :(得分:0)
获取此错误
IndexError: list assignment index out of range
尝试访问元素时意味着列表中的位置不存在。
由于您的范围设置为只有索引0,这意味着当您尝试调用该文件时该文件为空。
我认为这与删除文件中的条目之前有关,在你试图在for循环中进一步调用它们之前,但是无法确定:
del file[0]
del file[0]
您可以检查的是该循环中的打印文件。此外,使用如下所示的读取线设置for循环更为惯用:
f = open('yourfile.txt','r')
for line in f.readlines():
# do something
f.close()
答案 1 :(得分:0)
经过进一步的研究,我找到了一个解决方案,它读取我的每个文件的内容,并使用这个帖子将这两个值作为data
中的条目存储在文件中:
Python: How to read a directory of texts into a list
我编辑的代码:
with open("list.txt") as f:
file = f.readlines()
f.close()
del file[0]
del file[0]
file = [w.replace('\n','') for w in file]
length_file = len(file)
data = []
for i in range(0, length_file):
with open(file[i]) as fa:
data.append(fa.read())
fa.close()
data = [t.replace('\n','') for t in data]
#print data[0], data[1]
**** **** EDIT
我现在可以根据需要运行代码。对于可能需要列出清单的其他人:
此代码读入list.txt
中存储的目录的文件名。它循环遍历,按文件名打开每个文件,并将文件中的两个值保存到变量data
。 data
包含一系列列表。
with open("list.txt") as f:
file = f.readlines()
f.close()
del file[0] #in my case removes the first two files in list.txt because they contain irrelevant info
del file[0]
file = [w.replace('\n','') for w in file]
length_file = len(file)
data = []
for i in range(0, length_file):
with open(file[i]) as fa:
data.append(fa.read().split('\n'))
fa.close()
print data[0]
print data
例如,在此代码中:
data[0] = [value1 of file1 from list.txt, value2 of file1 from list.txt]
和data = [[value1 of file 1 from list.txt , value2 of file1 from list.txt], [value1 of file2 from list.txt, value2 of file 2 from list.txt], ...etc.