python调用程序call_Python下的subprocess.call()使用和注意事项

Python虽然有许多优秀的第三方库,但在实际使用的时候免不了使用一些cmd调用的程序,毕竟这类程序比较底层,更快、也更稳定。比如GDAL、FFmpeg、 ImageMagick等。

利用Python调用cmd的方法也有不少,例如os.system和subprocess.call(),本次主要介绍后者。同时也会说明一些避雷的注意事项。

subprocess 模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值。其中的subprocess.call()则可以调用windows系统cmd命令行执行额外的命令。

在使用subprocess.call()之前,需要保证调用的软件已经添加在系统的环境变量路径中。如GDAL:

image

我以GDAL中的gdalwarp函数为例

image

当程序能在cmd中正确运行时,我们才可能使用subprocess.call()调用它。

其次,你需要在python中安装subprocess这个库(好像有点废话)

image

完成这些废话步骤之后,就可以愉快的运行起来了。比如:

GDAL的影像拼接:

image

裁剪:(图略)

GIF制作:(图略)

图像拼接:

image

视频流的声音导入:(图略)

以下:

1、subprocess.call()的输出反馈有3个,分别是0,1,2。其中0代表正确执行,1和2都是错误执行,2通常是没有读取到文件,1的反馈目前未知。

2、windows的cmd是有输入字符长度限制的,据查,win7以上的系统大概是8k个字符长度(数字、英文),所以,一旦输入的字符长度过长,就需要分批次运行(暂时没有其他解法)。或者不使用cmd方法。其他操作系统未知。

到此为止

image

微信号:一个有趣的灵魂W关注我们,了解更多

Traceback (most recent call last): File "C:\Users\Administrator\PycharmProjects\pythonProject4\venv\lib\site-packages\pytesseract\pytesseract.py", line 392, in get_tesseract_version stdin=subprocess.DEVNULL, File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\subprocess.py", line 411, in check_output **kwargs).stdout File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\subprocess.py", line 488, in run with Popen(*popenargs, **kwargs) as process: File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\subprocess.py", line 800, in __init__ restore_signals, start_new_session) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\subprocess.py", line 1207, in _execute_child startupinfo) File "D:\PyCharm Community Edition 2022.1.3\plugins\python-ce\helpers\pydev\_pydev_bundle\pydev_monkey.py", line 575, in new_CreateProcess return getattr(_subprocess, original_name)(app_name, patch_arg_str_win(cmd_line), *args) FileNotFoundError: [WinError 2] 系统找不到指定的文件。 During handling of the above exception, another exception occurred: Traceback (most recent call last): File "D:\PyCharm Community Edition 2022.1.3\plugins\python-ce\helpers\pydev\pydevd.py", line 1491, in _exec pydev_imports.execfile(file, globals, locals) # execute the script File "D:\PyCharm Community Edition 2022.1.3\plugins\python-ce\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile exec(compile(contents+"\n", file, 'exec'), glob, loc) File "C:/Users/Administrator/PycharmProjects/pythonProject4/main.py", line 3, in <module> print(pytesseract.get_tesseract_version()) File "C:\Users\Administrator\PycharmProjects\pythonProject4\venv\lib\site-packages\pytesseract\pytesseract.py", line 146, in wrapper wrapper._result = func(*args, **kwargs) File "C:\Users\Administrator\PycharmProjects\pythonProject4\venv\lib\site-packages\pytesseract\pytesseract.py", line 395, in get_tesseract_version raise TesseractNotFoundError() pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your PATH. See README file for more information. Process finished with exit code 1该如何处理
07-20
根据错误信息,你遇到了一个 `TesseractNotFoundError` 错误,它表示Tesseract OCR引擎未安装或未在系统的PATH环境变量中。 要解决这个问题,你可以尝试以下方法: 1. 安装Tesseract OCR引擎: 下载并安装适合你操作系统的Tesseract OCR引擎。你可以从以下链接获取适用于不同操作系统的安装程序:https://github.com/UB-Mannheim/tesseract/wiki 安装完成后,请确保将Tesseract可执行文件路径添加到系统的PATH环境变量中。这样,Python和pytesseract库才能找到它。 2. 检查Tesseract可执行文件路径: 确保在你的代码中指定了正确的Tesseract可执行文件路径。你可以在代码的开头添加以下行来设置路径: ```python pytesseract.pytesseract.tesseract_cmd = r'path_to_tesseract_executable' ``` 将 `'path_to_tesseract_executable'` 替换为你计算机上Tesseract可执行文件的实际路径。 3. 重启PyCharm: 如果你已经按照上述步骤安装了Tesseract OCR引擎并设置了正确的路径,但仍然遇到问题,请尝试重启PyCharm来确保它能够正确加载新的环境变量。 4. 检查PyCharm配置: 确保你在PyCharm中正确配置了Python解释器,并且所使用的解释器与你安装Tesseract OCR引擎时使用的解释器一致。 可以通过以下步骤检查和更改Python解释器配置: - 在PyCharm的顶部菜单栏中,选择 "File"(文件)> "Settings"(设置)。 - 在设置窗口中,展开 "Project"(项目)> "Project Interpreter"(项目解释器)。 - 确认所使用的解释器与你安装Tesseract时使用的解释器一致。如果不一致,请选择正确的解释器。 如果你仍然遇到问题,请确保正确安装了Tesseract OCR引擎并配置了正确的路径。如果问题仍然存在,你可以尝试在命令行终端中运行相同的代码,以便更好地了解问题所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值