我正在尝试打开一个随机时间日期戳作为其名称的一部分的文件。大多数文件名是已知的,例如filename = 2017_01_23_624.txt
是我的测试名称。日期和数字是我试图用未知的东西替换的部分,因为它会改变。
我的问题涉及打开现有文件而不是创建新文件名。文件名由单独的程序创建,我必须能够打开它们。我也想在他们开放后改变它们。
我一直在尝试构造文件名字符串,如下所示,但语法无效。
filename = "testfile" + %s + ".txt"
print(filename)
fo = open(filename)
答案 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
模块,您可以根据需要更准确地匹配文件。这一切都取决于你想要的程度。