2013-07-13 2 views
0

Я хочу, чтобы написать сценарий Python, что:Python ошибка subprocess.call() в цикле

  1. Считывает все подкаталоги в каталоге (это петля 1)

  2. Считывает текущее изображение в подкаталоге (не цикл, потому что он имеет только один изображение)

  3. После прочтения этого изображения, что-то исправить и записать его на новое изображение в текущем подкаталоге.

Все это хорошо, но когда я пытаюсь запустить subprocess.call() с этим новым имиджем, у меня есть проблема:

новое изображение -> subporcess.cal() -> новое изображение 2

«Новое изображение 2» при сгенерированном скрипте python дает ошибку при открытии (но если я пытаюсь запустить через командную строку или не зацикливать по подкаталогам, она работает).

Вот мой код, как я описал выше:

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'? Вы не используете какую-либо функцию оболочки, единственное, что вы делаете, - это открыть дыру в безопасности. Кроме того, если вы хотите проверить stdout, вы можете использовать 'subprocess.check_output' (обратите внимание, что в документации явно указано значение * avoid *, устанавливающее' stdout = PIPE' в 'subprocess.call', поскольку это может вызвать тупик!). – Bakuriu

ответ

0

Я думаю, что трудность заключается в том, что fileName не быть повторно назначены. Готов поспорить, что если вы вызываете print warp, прежде чем позвонить subprocess.call, вы увидите большое количество повторений одной и той же команды. Возможно, вы имели в виду это:

warp = "gdalwarp -t_srs '+proj=longlat +datum=WGS84 +no_defs' "+ 
     "-ot Float32 -tps mecrator.tif " + dayFolder + "/" + fileName + ".tif" 
Смежные вопросы