文件名有数字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
答案 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