Python 子进程 check_call 不会给出与在命令行中执行的相同命令相同的结果

问题描述

我正在为 python 代码和终端使用 anaconda 环境。

当我想在环境激活的情况下在 shell (Windows CMD) 中执行程序时。程序 ogr2ogr 使用给定的参数返回正确的输出。工具 ogr2ogr 已通过 conda 包安装。

但是当我执行我的 python 代码时,ogr2ogr 返回一个错误输出。我认为可能是由于使用环境不同(在我不知情的情况下)使用不同的安装,但这本身是一种猜测。

python代码如下:

from pathlib import Path
from subprocess import check_call,STDOUT
...
file_path = Path(file_name)
destination = str(file_path.with_suffix(".gpkg"))
command = f"ogr2ogr -f GPKG -s_srs epsg:25833 -t_srs epsg:25833 {destination} GMLAS:{file_name} -oo REMOVE_UNUSED_LAYERS=YES"

check_call(command,stderr=STDOUT,shell=True)

ogr2ogr 将文件转换为另一种格式。这也完成了,但是当我打开文件时,我看到它没有 100% 正确完成。 当我复制字符串 command 的值并将其复制到 shell 并执行命令时,执行正确完成!

如何纠正使用 subprocess.check_call 的行为

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)