【发布时间】:2015-09-03 01:40:02
【问题描述】:
我有一个 python 脚本,它将文件名作为命令参数并处理该文件。但是,我有数千个文件需要处理,我想在每个文件上运行脚本,而不必每次都添加文件名作为参数。
脚本在像这样在单个文件上运行时效果很好:
myscript.py /my/folder/of/stuff/text1.txt
我有这段代码可以一次完成所有这些,但它不起作用
for fname in glob.iglob(os.path.join('folder/location')):
proc = subprocess.Popen([sys.executable, 'script/location.py', fname])
proc.wait()
每当我运行上述代码时,它都不会抛出错误,但不会给我预期的输出。我认为问题在于脚本期望 .txt 文件的路径作为参数,而代码只是给它文件所在的文件夹(或者至少不是工作的绝对引用)。
如何解决这个问题?
【问题讨论】:
-
为什么不编辑
myscript.py并将其拆分为函数?然后,您可以在需要的每个文件上执行from myscript import my_function并调用my_function。 -
os.path.join('folder/location')什么都不做。试试os.path.join('folder/location', '*.txt')— 通常将带有通配符的文件名模式参数传递给glob.iglob()。
标签: python batch-file subprocess