如何迭代文本文件的行?

时间:2016-03-03 21:06:55

标签: python python-3.x

我需要从文本文件中取出行并将它们用作python函数中的变量。

def call(file):
        with open(file) as infile, open('output.txt', 'w') as outfile:
            do stuff in a for loop

文件是变量名,我打算有一个包含文本文件名列表的文本文件,如下所示:

hello.txt
world.txt
python.txt

我可以用一个文件名调用该函数:

call(hello.txt)

但是我需要经历一长串文件。如何在使用每个文件名调用函数一行时逐行读取包含文件名的文件?

2 个答案:

答案 0 :(得分:2)

“如何在使用每个文件名调用函数一行时逐行读取包含文件名的文件?” ...您刚才解释了要做什么。假设包含其他文件名的文本文件为"listoffiles.txt"

with open('listoffiles.txt') as fp:
    for line in fp:
        filename = line.strip()
        if filename:
            call(filename)

请注意,由于call会覆盖output.txt,因此您可能会遇到其他问题。

当然,根据其他设计目标,您可以call处理打开的文件对象而不是文件名。这使得该函数更通用,并且可能对其他情况有用,例如使用其他类似文件的对象,例如StringIO

def call(output, filename):
   with open(filename) as infile:
       # do some stuff directly with file

with open('output.txt', 'w') as output:
    with open('listoffiles.txt') as fp:
        for line in fp:
            filename = line.strip()
            if filename:
                call(output, filename)

答案 1 :(得分:0)

在以下示例中,我将文本文件字符串分配给任意变量 然后我删除了' .txt'以便遵守变量名称约定 然后我将x的字符串值赋给数字2

x='hello.txt' 
x = x.replace(".txt","")  
exec("%s = %d" % (x,2))
print(str(x) + ' is equal to: ' + str(hello))

如果您尝试使用代码

hello is equal to: 2