python - 在python脚本中查找具有变量名的文件

标签 python linux shell-exec

我正在尝试在 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.walkglob.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/

相关文章:

python - 删除06、07等数字前的0

python - SQLAlchemy/Python 3(默认列值)

C++ 如何将二进制文件的一部分复制到新文件?

linux - 在 Linux shell bash 脚本中,如何在同一行打印到文件?

linux - 使用 sqlplus 编写 bash 函数来删除用户

android - 具有多个类元素的 native Android 移动应用程序测试自动机导航

javascript - 我可以在 streamlit Web 应用程序中显示自定义 javascript

php shell_exec 权限被拒绝

带有屏幕和 Ts3Musicbot 的 PHP shell_exec

php - 如何在 phpunit 中模拟 git diff 的结果