初学者:python subprocess.call有数百个args

时间:2012-03-17 05:00:59

标签: python

免责声明:我是python的初学者,但有Drupal编程经验。

我有这个:

f = ['/path/1.jpg', '/path/2.jpg', '/path/3.jpg'] #less than 1500 files

我需要这样做

call(['c:/program files/ABBYY FineReader 10/finereader.exe'] + f)

但是,有一个32K字符的参数限制(http://stackoverflow.com/questions/2381241/what-is-the-subprocess-popen-max-length-of-the-args-parameter),所以我需要首先删除/ path。如何继续,允许.exe找到文件?

谢谢!

2 个答案:

答案 0 :(得分:1)

您应该将cwd='/path/'添加到subprocess.call的参数中。这会将可执行文件的工作目录更改为'/path/'(但请注意,它不用于搜索可执行文件,因此仍然为此提供绝对路径)。

然后,假设它们都在同一条路径中,您可以使用:

import os
f = [os.path.basename(x) for x in f]

答案 1 :(得分:0)

好像你在Windows上。在这种情况下,您可以尝试指定可能由'*.jpg'本身处理的通配符finereader.exe

check_call(r'c:\path\to\finereader.exe *.jpg', cwd=r'c:\jpg\dir')