调用脚本可以从终端工作,但不能从python子进程工作。

2024-10-03 06:21:49 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我的代码。它在调用终端时工作,但在python2.7脚本中不工作

/usr/bin/python3.5 /var/www/html/web_map/simplemap/resources/py/align_raster.py
/mnt/13aa104a-192c-43e5-95af-68aba6ac57a9/temp/85a0b2f9-c3fb-4913-9d70-a0c49f3649ba/chlor_a-modis-aqua-01_2013.tif,
/mnt/13aa104a-192c-43e5-95af-68aba6ac57a9/temp/85a0b2f9-c3fb-4913-9d70-a0c49f3649ba/chlor_a-modis-aqua-02_2013.tif,
/mnt/13aa104a-192c-43e5-95af-68aba6ac57a9/temp/85a0b2f9-c3fb-4913-9d70-a0c49f3649ba/chlor_a-modis-aqua-03_2013.tif,
/mnt/13aa104a-192c-43e5-95af-68aba6ac57a9/temp/85a0b2f9-c3fb-4913-9d70-a0c49f3649ba/chlor_a-modis-aqua-04_2013.tif,
/mnt/13aa104a-192c-43e5-95af-68aba6ac57a9/temp/85a0b2f9-c3fb-4913-9d70-a0c49f3649ba/chlor_a-modis-aqua-05_2013.tif,
/mnt/13aa104a-192c-43e5-95af-68aba6ac57a9/temp/85a0b2f9-c3fb-4913-9d70-a0c49f3649ba/chlor_a-modis-aqua-06_2013.tif,
/mnt/13aa104a-192c-43e5-95af-68aba6ac57a9/temp/85a0b2f9-c3fb-4913-9d70-a0c49f3649ba/chlor_a-modis-aqua-07_2013.tif,
/mnt/13aa104a-192c-43e5-95af-68aba6ac57a9/temp/85a0b2f9-c3fb-4913-9d70-a0c49f3649ba/chlor_a-modis-aqua-08_2013.tif,
/mnt/13aa104a-192c-43e5-95af-68aba6ac57a9/temp/85a0b2f9-c3fb-4913-9d70-a0c49f3649ba/chlor_a-modis-aqua-09_2013.tif,
/mnt/13aa104a-192c-43e5-95af-68aba6ac57a9/temp/85a0b2f9-c3fb-4913-9d70-a0c49f3649ba/chlor_a-modis-aqua-10_2013.tif,
/mnt/13aa104a-192c-43e5-95af-68aba6ac57a9/temp/85a0b2f9-c3fb-4913-9d70-a0c49f3649ba/chlor_a-modis-aqua-11_2013.tif
_aligned.tif

这是终端的输出

Segmentation fault (core dumped)

这是一个QGIS python独立脚本。它总是显示错误,但文件会处理所需的任何内容

这不管用

cmd = '/usr/bin/python3.5 /var/www/html/web_map/simplemap/resources/py/align_raster.py {} {}'.format(
    output_files_string, output_suffix
)
print(cmd)

result = call(cmd.split(), shell=False)

我也试过shell=True

它可能是由代码转储引起的,但是有没有办法欺骗python文件是好的

编辑:代码转储用this解决方案修复

Edit2:我认为这个问题与Apache CGI Python有关。因为它在仅从浏览器运行时失败


Tags: 代码py脚本cmd终端binusrmodis
1条回答
网友
1楼 · 发布于 2024-10-03 06:21:49

使用subprocess

import subprocess

subprocess.Popen(cmd, shell=True)

您甚至可以通过设置

import subprocess

subprocess.Popen(cmd,
                 shell=True,
                 stdout=subprocess.DEVNULL,
                 stderr=subprocess.STDOUT)

相关问题 更多 >