String 字符串中的通配符作为输入

String 字符串中的通配符作为输入,string,python-3.x,wildcard,filenames,String,Python 3.x,Wildcard,Filenames,我有一个变量,它是流程的输入。它本质上是文件的完整路径名,但会基于列表注入一个值以获得正确的名称: fipsList = ['06001','06037','06059'] for fip in fipsList: file = r"T:\CCSI\TECH\FEMA\Datasets\NFHL\NFHL_06122018\NFHL_{}_20180518.gdb".format(fip)" 我现在想做的是将“…NFHL{}和…gdb”之间的所有内容都设置为通配符“*”。只需使用

我有一个变量,它是流程的输入。它本质上是文件的完整路径名,但会基于列表注入一个值以获得正确的名称:

 fipsList = ['06001','06037','06059']
 for fip in fipsList:
     file = r"T:\CCSI\TECH\FEMA\Datasets\NFHL\NFHL_06122018\NFHL_{}_20180518.gdb".format(fip)"
我现在想做的是将
“…NFHL{}
…gdb”
之间的所有内容都设置为通配符“*”。只需使用
file=r“T:\CCSI\TECH\FEMA\Datasets\NFHL\NFHL\u 06122018\NFHL\u{}\ u*.gdb.format(fip)”

似乎不起作用。本质上,这就是产生的原因:
>>'T:\\CCSI\\TECH\\FEMA\\Datasets\\NFHL\\NFHL\u 06122018\\NFHL\u 06.*.gdb'
。关于如何使其工作的建议?

可能是一些旧的好方法

比如:


以这种方式简单地将“*”添加到字符串中是行不通的。问题的设置很差(我自己的错),但为了澄清起见,以下是我解决问题的方法:

 fipsList = ['06001','06037','06059']
 for fip in fipsList:
     path = r"T:\CCSI\TECH\FEMA\Datasets\NFHL\NFHL_06122018"
     for root, dirs, filename in os.walk(path):
        for dir in dirs:
            if('NFHL_' + fip[:2] in dir and '.gdb' in dir):
                file = os.path.join(root, dir)

基本上,我必须遍历文件夹并使用
if
条件来确保同时满足
fip
值和
.gdb
扩展名的条件。

似乎不起作用“它到底是如何工作的?我得到了一个
文件不存在的错误。从本质上说,这就是产生的:
'T:\\CCSI\\TECH\\FEMA\\Datasets\\NFHL\\NFHL\u 06122018\\NFHL\u 06.*.gdb'
Hmmm,这不会真正起作用,因为
{/code>正在被FIP取代。”。我想替换的是“20180518”。嗯,不知道出了什么问题。在concat的情况下,它会按照您的要求执行,因此它不会修改第一个字符串。我刚刚运行了脚本,下面是输出:T:\CCSI\TECH\FEMA\Datasets\NFHL\NFHL\u 06122018\NFHL\u{}u 06001.gdb T:\CCSI\TECH\FEMA\Datasets\NFHL\NFHL\u 06122018\NFHL{}u 06037.gdb T:\CCSI\TECH\FEMA\Datasets\NFHL\NFHL\NFHL\NFHL\u 06122018\NFHL}\u 06059.gdby我们的代码工作正常,但它不是我试图注入字符串的
值。
 fipsList = ['06001','06037','06059']
 for fip in fipsList:
     path = r"T:\CCSI\TECH\FEMA\Datasets\NFHL\NFHL_06122018"
     for root, dirs, filename in os.walk(path):
        for dir in dirs:
            if('NFHL_' + fip[:2] in dir and '.gdb' in dir):
                file = os.path.join(root, dir)