我有一个包含许多文件的目录,这些文件都具有相同的基本文件名格式(下面是一个示例)
roll_0_oe_2008-03-24_AAA.XNGS
roll_0_oe_2008-03-24_AAB.XNGS
roll_1_oe_2008-03-31_AAC.XNGS
roll_1_oe_2008-03-31_AAG.XNGS
roll_2_oe_2008-04-07_AAR.XNGS
roll_2_oe_2008-04-07_AAJ.XNGS
我正在尝试根据使用选择文件:
filename = 'roll_'+str(roll)'_'*ID
其中roll是一个int,我将其转换为字符串,ID是一个字符串。我使用通配符*作为_oe_date元素,因为我不关心这部分。但是我收到以下错误:
TypeError: can't multiply sequence by non-int of type 'str'
如何在中间使用通配符构建文件名?
答案 0 :(得分:2)
我认为您需要glob
模块和str.format(...)
方法:
# Don't know where this comes from.
roll = 2
id = 'AAC'
# Format: roll_2_oe_2008-04-07_AAJ.XNGS
Fn_format= "roll_{}_oe_*_{}.XNGS"
# Make a file-glob by putting the roll into format.
rolled_files = Fn_format.format(roll, id)
import glob
for fname in glob.iglob(rolled_files):
print("Rolled file:", fname)
答案 1 :(得分:2)
您必须将外卡嵌入为字符,并确保您的文件搜索界面接受外卡。
filename = 'roll_'+str(roll)'_*'+ID
但是,请注意,不标识特定的文件名:要做到这一点,您需要一个系统命令(有几个搜索和获取文件名)。 Python 打开功能不接受通配符。
答案 2 :(得分:0)
您可以使用format()
:
filename = 'roll_{}_{}'.format(roll, ID)