将几个文件的内容读入Python中的列表

时间:2017-11-17 02:16:04

标签: python list file

我有一个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()行语句上。

非常感谢任何帮助!提前谢谢!

2 个答案:

答案 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中存储的目录的文件名。它循环遍历,按文件名打开每个文件,并将文件中的两个值保存到变量datadata包含一系列列表。

    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.