2012-03-17 30 views
2

聲明:我是一名Python初學者,但擁有Drupal編程經驗。初學者:python subprocess.call擁有數百個參數

我有這樣的:

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

,我必須這樣做

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

,但有一種說法極限(http://stackoverflow.com/questions/2381241/what- is-the-subprocess-popen-max-length-of-the-args-parameter)的32K字符,所以我需要首先刪除/ path。我如何繼續,讓.exe找到文件?

謝謝!

回答

1

您應該將cwd='/path/'添加到您的subprocess.call的參數中。這會將工作目錄更改爲'/path/'可執行文件(但請注意,它不用於搜索可執行文件,因此仍然爲此提供絕對路徑)。

然後,假設他們都是在相同的路徑,你可以使用:

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

WIM,你真棒!謝謝! – 2012-03-17 05:12:32

0

看來你是在Windows上。在這種情況下,你可以嘗試通過finereader.exe本身指定通配符'*.jpg'可能被處理:

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