我已经在网上看了,特别是在Stackoverflow中,我没有发现这个特殊问题。我试图使用python子进程模块在我的应用程序中运行命令行程序。该脚本的目的是在参数列表中创建最后一个文件。需要为脚本提供文件名,以便可以创建它。该文件不应该存在。我创建了命令:
command = ['/path_to_the_executable/bin/kraken', '-i', '/path_to_the_scans/Scans/4.jpg', '4.tif', 'binarize']
然后我将命令交给subprocess.check_call:
output = check_call(command, cwd=output_path)
当我在python之外直接在命令行上运行此完整命令时,它会在正确的目录中创建该文件。有用。当我在subprocess.check_call中运行它时,它表示最后一个文件不存在,并拒绝执行。但是最后一个文件不应该存在!它应该在这个过程中创建。为什么check_call坚持这一点,我怎么能把它关掉?还是有其他选择吗?或者我做错了什么?
我还尝试了另一种方法,即创建一个新的,尚未创建的文件的完整路径,并且不使用cwd = output_path。当我直接在命令行上运行脚本时,该脚本也使用此格式,即输出文件的完整路径。但在python中,它以同样的方式抱怨......文件或目录不存在。
我也尝试过使用子进程调用,但是以同样的方式失败:FileNotFoundError。
请帮帮我!我很沮丧,对我心爱的Python很失望......
有关kraken的信息可以在这里找到:http://kraken.re/这是一个基于python的命令行实用程序。
Herer是错误消息:
FileNotFoundError at /ocr/kraken_binarize/
[Errno 2] No such file or directory:
'/path_to_output_directory/ocr_textmining_samples/Scans_300_dpi/4.tif'
Request Method: POST
Request URL: http://127.0.0.1:8000/ocr/kraken_binarize/
Django Version: 1.10.5
Exception Type: FileNotFoundError
Exception Value:
[Errno 2] No such file or directory:
'/path_to_output_directory/ocr_textmining_samples/Scans_300_dpi/4.tif'
Exception Location: /path_to_python/opencv-
ocr/lib/python3.6/subprocess.py in _execute_child, line 1326
ls -al / path_to_output_directory / ocr_textmining_samples / Scans_300_d pi表明我是所有者。
ls -al Dokumente/ocr_textmining_samples/Scans_300_dpi/
insgesamt 8
drwxrwxr-x 2 pwarner pwarner 4096 Jul 27 12:59 .
drwxrwxr-x 13 pwarner pwarner 4096 Jul 27 13:00 ..
这是eclipse工作区目录的ls -al:
ls -al workspace-python/ocr_textmining_server/data/test/
insgesamt 100
drwxrwxr-x 2 pwarner pwarner 4096 Jul 27 14:01 .
drwxrwxr-x 6 pwarner pwarner 4096 Jul 27 13:59 ..
-rw-rw-r-- 1 pwarner pwarner 90915 Jul 27 14:01 4.tif