python subprocess check_call坚持存在一个文件

时间:2017-07-27 11:41:19

标签: python subprocess file-not-found

我已经在网上看了,特别是在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

0 个答案:

没有答案