如何在变量名称的python中打开文件?

时间:2017-01-24 02:38:39

标签: python-3.x

我正在尝试打开一个随机时间日期戳作为其名称的一部分的文件。大多数文件名是已知的,例如filename = 2017_01_23_624.txt是我的测试名称。日期和数字是我试图用未知的东西替换的部分,因为它会改变。 我的问题涉及打开现有文件而不是创建新文件名。文件名由单独的程序创建,我必须能够打开它们。我也想在他们开放后改变它们。 我一直在尝试构造文件名字符串,如下所示,但语法无效。

filename = "testfile" + %s + ".txt"
print(filename)
fo = open(filename)

1 个答案:

答案 0 :(得分:0)

您无法打开包含通配符的部分文件名的文件,以便匹配。您需要做的就是查看目录中的所有文件,然后选择最匹配的文件。

简单示例:

import os

filename = "filename2017_" # known section
direc = r"directorypath"

matches = [ fname for fname in os.listdir(direc) if fname.startswith(filename) ]
print(matches)

但是,您可以使用glob模块(感谢bzimor)来模式匹配您的文件。有关详细信息,请参阅glob docs

import glob, os

# ? - represents any single character in the filename
# * - represents any number of characters in the filename
direc = r"directorypath"
pattern = 'filename2017-??-??-*.txt'
matches = glob.glob(os.path.join(direc, pattern))
print(matches)

与第一种解决方案类似,您仍然可以获取可供选择的文件名列表,然后再打开。但是使用glob模块,您可以根据需要更准确地匹配文件。这一切都取决于你想要的程度。