gpt4 book ai didi

python - 如何向 python 子进程添加选项

转载 作者:行者123 更新时间:2023-12-01 04:12:23 27 4
gpt4 key购买 nike

我正在使用Python 2.7.3。

我有一个作为命令行运行tesseract的函数。一切工作正常,现在我想向命令 -l rus 添加一个新参数(表示俄语)。尽管这在我的命令行上有效,但它似乎在 Python 上不起作用。

命令行:

$ /usr/local/bin/tesseract /Users/anthony/Downloads/rus.png outfile -l rus && more outfile.txt
Tesseract Open Source OCR Engine v3.02.02 with Leptonica
Полу-Милорд, полу-купец,
Полу-мудрец, полу-невежда,
Полу-подлец, но есть надежда,

Что будет полным наконец.

Python函数

  def ocr(self,path):
path = "/Users/anthony/Downloads/rus.png"
process = subprocess.Popen(['/usr/local/bin/tesseract', path,'outfile','-l rus'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
out, err = process.communicate()
print err
print out
with open('outfile.txt', 'r') as handle:
contents = handle.read()
os.remove(temp.name + '.txt')
os.remove(temp.name)

return contents, out

上面返回“HOIIY nony HOIIY nony Hony no ecTb HHJICXQRI 6y11e”,这表明 -l rus 标志被忽略。

问题

如何作为 python 子进程执行以下命令?

/usr/local/bin/tesseract /Users/anthony/Downloads/rus.png outfile -l rus

最佳答案

您需要将 '-l rus' 参数拆分为两个单独的参数,以确保程序正确解析它:

process = subprocess.Popen(
['/usr/local/bin/tesseract', path, 'outfile', '-l', 'rus'],
stdout=subprocess.PIPE, stderr=subprocess.STDOUT
)

使用 str.split() 可能会很方便或shlex.split()为此:

cmd = '/usr/local/bin/tesseract /Users/anthony/Downloads/rus.png outfile -l rus'

process = subprocess.Popen(
cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT
)

关于python - 如何向 python 子进程添加选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34751942/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com