字符串

时间:2017-03-29 21:21:13

标签: python

我有一个包含许多文件的目录,这些文件都具有相同的基本文件名格式(下面是一个示例)

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'

如何在中间使用通配符构建文件名?

3 个答案:

答案 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)