循环中subprocess.call()出现Python错误
我想编写一个Python脚本:循环中subprocess.call()出现Python错误,python,call,subprocess,popen,synchronous,Python,Call,Subprocess,Popen,Synchronous,我想编写一个Python脚本: 读取目录中的所有子目录(这是循环1) 读取子目录中的当前图像(不是循环,因为它只有一个 (图片) 阅读此图像后,修复某些内容并将其写入新图像 在当前子目录中 所有这些都没问题,但当我尝试使用此新映像运行subprocess.call()时,我遇到了一个问题: 新建映像->子进程.cal()->新建映像2 从python脚本生成的“newimage2”在打开时会出现错误(但是如果我尝试通过命令行或不在子目录中循环运行,它会工作) 这是我上面描述的代码: for da
subprocess.call()
时,我遇到了一个问题:
新建映像->子进程.cal()->新建映像2
从python脚本生成的“newimage2”在打开时会出现错误(但是如果我尝试通过命令行或不在子目录中循环运行,它会工作)
这是我上面描述的代码:
for dayFolder in listDayFolder:
output_dataset.GetRasterBand(1).WriteArray(data1)
warp = "gdalwarp -t_srs '+proj=longlat +datum=WGS84 +no_defs' -ot Float32 -tps mecrator.tif " + fileName + ".tif";
pipe = subprocess.call([warp], stdout=subprocess.PIPE, shell=True)
我猜困难在于
fileName
没有被重新分配。我敢打赌,如果在调用subprocess.call
之前调用print warp
,您会注意到同一命令的大量重复。也许你的意思是:
warp = "gdalwarp -t_srs '+proj=longlat +datum=WGS84 +no_defs' "+
"-ot Float32 -tps mecrator.tif " + dayFolder + "/" + fileName + ".tif"
你的压痕到处都是。。。这就是代码的实际外观吗?(因为如果是这样,它甚至不会运行,而是会给您一个
IndentationError
)。为什么要使用shell=True
?您没有使用任何shell功能,唯一要做的就是打开一个安全漏洞。另外,如果要检查标准输出,可以使用子流程。检查输出
(注意,文档中明确说明避免在子流程中设置stdout=PIPE
。调用
,因为这可能会导致死锁!)。