如何在变量作为文件名的一部分打开python中的文件?

时间:2013-08-17 21:00:01

标签: python python-2.7 python-3.x

文件名有数字1-32的东西,我想按顺序打开它们,如:

i = 1
while i < 32:
filename = "C:\\Documents and Settings\\file[i].txt"
f = open(filename, 'r')
text = f.read()
f.close()

但是这会查找文件“file [i] .txt”而不是file1.txt,file2.txt等等。我如何使变量成为双引号内的变量?是的,我知道它没有缩进,请不要认为那是愚蠢的。

我认为这可行: 像构建包含变量的任何其他字符串一样构建文件名:

filename = "C:\\Documents and Settings\\file" + str( i ) + ".txt"

或者如果您需要更多选项来格式化数字:

filename = "C:\\Documents and Settings\\file%d.txt" % i

3 个答案:

答案 0 :(得分:5)

您已经提供了答案。顺便说一下,使用with上下文管理器而不是手动调用close()

i = 1
while i < 32:
    filename = "C:\\Documents and Settings\\file%d.txt" % i
    with open(filename, 'r') as f:
        print(f.read())

答案 1 :(得分:4)

首先,将您的循环更改为while i <= 32,否则您将使用其名称中的32排除该文件。 您的第二个选项filename = "C:\\Documents and Settings\\file%d.txt" % i应该有效。

如果你的文件中的数字是0填充的,比如'file01.txt','file02.txt',你可以使用%.2d而不是普通的旧%d

答案 2 :(得分:2)

是的,您提供的选项会起作用,为什么不试试呢?

filename = "C:\\Documents and Settings\\file" + str( i ) + ".txt"

filename = "C:\\Documents and Settings\\file%d.txt" % i