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