我正在尝试在 python 脚本中执行 find 命令,使用 for 循环传递一个变量索引来确定要查找的特定文件名。我正在使用以下语法,它在 python 中返回一个空集,但在终端中有效:
for j in [1,2,3,5]:
file_name = cmd.getoutput('find . -type f -name "*${j}-xyz.stc" -printf "%f\n"')
显然,在我的 python 代码中,变量没有传递给 find 表达式,但我该如何补救呢?任何建议表示赞赏。
最佳答案
变量在 python 中不像在 bash 中那样展开。你可能想要:
command = r'find . -type f -name "*{0}-xyz.stc" -printf "%f\n"'.format(j)
file_name = cmd.getoutput(command)
另请注意,commands
模块已弃用,取而代之的是 subprocess
。最后,可能应该指出的是,如果您将 os.walk
与glob.glob
.
未经测试,但像这样的东西应该很接近......
import os
import glob
def find_files(glob_expr):
for root,_,_ in os.walk(os.curdir):
for fname in glob.iglob(os.path.join(os.curdir,root,glob_expr)):
yield fname
for i in (1,2,3,4):
print (list(find_files('{0}-xyz.stc'.format(i))))
关于python - 在python脚本中查找具有变量名的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12187051/