【问题标题】:beginner: python subprocess.call with hundreds of args初学者:具有数百个参数的python subprocess.call
【发布时间】:2012-03-17 05:00:59
【问题描述】:

免责声明:我是 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 找到文件?

谢谢!

【问题讨论】:

    标签: python


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多