Я хочу использовать утилиту " raster2pgsql " в моем коде Python. Когда я использую его в терминале Linux, он работает нормально. Это команда:
$ raster2pgsql -a "/mnt/c/Users/Jan/path/to/raster/dem.tiff" test_schema.raster2 | psql -h localhost -d pisl -U pisl
Затем я использую subprocess.run (я также пробовал subprocess.call), чтобы использовать этот же инструмент в моем коде Python. Это мой код:
from subprocess import run
command = ["raster2pgsql", "-a", '"' + file_name + '"', self.schema_name + "." + identifier, "|", "psql", "-h", "localhost", "-p", "5432", "-d", self.dbname]
run(command)
Я получаю эту ошибку:
ERROR: Unable to read raster file: "/mnt/c/Users/Jan/path/to/raster/dem.tiff"
Печать command
дает то, что я считаю правильным (эквивалентно тому, что работало в терминале):
['raster2pgsql', '-a', '"/mnt/c/Users/Jan/path/to/raster/dem.tiff"', 'test_schema.raster2', '|', 'psql', '-h', 'localhost', '-p', '5432', '-d', 'pisl']
Я дважды проверил, что путь к растровому файлу правильный, пробовал одинарные, двойные кавычки, но ничего не помогает. Я рассмотрел ряд похожих вопросов ( здесь , здесь или здесь ), но не нашел ничего полезного.
Я использую Python 3.5 и Linux Bash Shell в Windows 10.
Вопрос : Что плохого в том, как я использую подпроцесс?