将文本文件放入列表中

时间:2017-06-05 12:11:40

标签: list file python-3.6

这是我的文本文件包含的内容: " file1的 文件2"

到目前为止,这是我的代码:

def create_filenames_list(filename):
    filenames_list = []
    file = open('input.txt', "r").readlines()
    for line in file:
            filenames_list = line

    return filenames_list.split()
def main():
    filenames_list = create_filenames_list('input.txt')
    print(filenames_list)

我得到的输出: "文件2" 我的期望是: [' file1',' file2']

3 个答案:

答案 0 :(得分:0)

def create_filenames_list(filename):
filenames_list = []
file = open('input.txt', "r").readlines()
for line in file:
        filenames_list.append(line)

return filenames_list
def main():
    filenames_list = create_filenames_list('input.txt')
    print(filenames_list)

答案 1 :(得分:0)

而不是

    filenames_list = line

使用filenames_list覆盖 列表 string两次,因此它最终只包含最新一个 - "file2"

使用

    filenames_list.append(line)

附加到列表中。

答案 2 :(得分:0)

如果您的文本文件在单独的行上有每个文件名,那么'file.readlines()'将很容易生成您想要的列表。

此外,在循环之前,您不需要将整个文件读入变量(file = open('input.txt',“r”)。readlines())。您可以直接在文件对象上循环(f = open('input.txt',“r”))。

您的所有文件名是否必须在单行上?如果是这样,您只需获取第一行,然后将其拆分为列表。

filenames_list = open('input.txt',"r").readline().split()

在您的代码中,'file'变量已经是文本文件中每一行的列表。循环跟随循环遍历该列表并最终仅返回文件中的最后一行。最后,返回仅来自文件最后一行的空格分隔值列表。

同样,如果您将每个文件名放在文件的单独一行,您的代码可以非常简化:

def create_filenames_list(filename):
  return open(filename,"r").readlines()

def main():
  filenames_list = create_filenames_list('input.txt')
  print(filenames_list)