2013-07-13 34 views
0

我想写一个Python脚本:与循环subprocess.call()Python的错误

  1. 读取所有子目录中的目录(这是循环1)

  2. 读取当前图像在子目录(不是循环,因为它只有一个 图像)

  3. 阅读此影像后,修复的东西,它在当前的子目录中写入新的图像 。

所有这一切都OK,但是当我尝试这个新的映像运行subprocess.call(),我有一个问题:

新形象 - > subporcess.cal() - >新图像2

从python脚本生成的'new image 2'在打开时会给出一个错误(但是如果我尝试通过命令行运行或者不通过子目录循环运行)。

这里是我的代码,我上面描述:

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) 
+0

你的缩进到处都是......是代码实际上看起来如何? (因为如果是这样,它甚至不会运行,但会给你一个'IndentationError')。 –

+0

你为什么使用'shell = True'?您没有使用任何shell功能,您唯一要做的就是继续打开安全漏洞。另外,如果你想检查stdout,你可以使用'subprocess.check_output'(注意,在'subprocess.call'中文档明确指出*避免*设置'stdout = PIPE',因为这可能导致死锁!)。 – Bakuriu

回答

0

我的猜测是,难的是这样一个事实:fileName没有被重新分配。我敢打赌,如果您在致电subprocess.call之前致电print warp,您会注意到大量重复的相同命令。也许你的意思是这样的:

warp = "gdalwarp -t_srs '+proj=longlat +datum=WGS84 +no_defs' "+ 
     "-ot Float32 -tps mecrator.tif " + dayFolder + "/" + fileName + ".tif"