python - 修改 python 脚本以在目录中的每个文件上运行

标签 python

所以我有一个 python 脚本,它将文件名作为命令参数并处理该文件。但是,因为我有 263 个文件需要相同的处理,我想知道是否可以用 for 循环修改命令参数部分以连续运行文件夹中的所有文件?干杯,星期六

编辑:

系统参数的代码在这里:

try:
    opt_list, args = getopt.getopt(sys.argv[1:], 'r:vo:A:Cp:U:eM:')

except getopt.GetoptError, msg:
    print 'prepare_receptor4.py: %s' %msg
    usage()
    sys.exit(2)

'r'是需要处理的文件名,其他是可选参数。我不确定如何使用 for 循环修改它。

最佳答案

实际上,无论您使用什么 shell,都可能有一些可以轻松用于此目的的语法。例如,在 Bash 中:

for f in *; do python myscript.py $f; done

要在 Python 中实际执行此操作,我建议构建您的程序,以便主要代码位于一个接受一个参数(文件名)的函数中。

def process(filename):
    ...code goes here...

然后你可以像这样调用这个函数,

for f in os.listdir(folder):
    process(f)

folder 可以作为命令行参数传递,或者直接写入脚本(如果它不是您要重用的东西)。

编辑:针对您的编辑,我建议只将文件名作为常规命令行参数提供,而不使用 -r 选项,以便它们将在 args 中结束。然后你可以做

for f in args:
    process(f)

或者如果您更愿意将目录名称作为命令行参数传递,

for d in args:
    for f in os.listdir(d):
        process(f)

或者,我想您可以传递 -r 选项的多个实例,然后执行

for opt, arg in opt_list:
    if opt == '-r':
        process(arg)

关于python - 修改 python 脚本以在目录中的每个文件上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3241804/

相关文章:

python - 使用python打开cmd自动输入密码

python - 如何在 TensorFlow 中获取 None 的真实形状(动态输入形状)?

python - 为 PyQt4.QtCore 导入 Hook

python - Objective-C 中是否存在类似 Python 生成器的东西?

Python 文本文件到字典中不起作用

python - 如何通过 class 属性包含空格的 css 选择器匹配特定标签?

Python Pandas : Label data with condition on rows

Python 正在处理数据?

python - 如何在M1 Mac上安装Deepface(Python人脸识别包)?

python - numpy 矩阵乘法或 einsum 运算中的 MemoryError