所以我有一个 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/