Дамп Postgres работает с Python os.system, но не с подпроцессомPython

Программы на Python
Ответить
Anonymous
 Дамп Postgres работает с Python os.system, но не с подпроцессом

Сообщение Anonymous »

Это выполняется успешно:

Код: Выделить всё

os.system('pg_dump sdtests > /home/bret/dump.custom')
Но выполнение этого с подпроцессом дает ошибку:

Код: Выделить всё

command = ['pg_dump', 'sdtests', '>', '/home/bret/dump.custom']
subPopenTry(command)
метод:

Код: Выделить всё

def subPopenTry(cmd):
try:
proc = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE,text=True,shell=True)
output, error = proc.communicate()
if proc.returncode != 0:
raise subprocess.CalledProcessError(proc.returncode, proc.args, output=output, stderr=error)
outputLines = output.splitlines()
return outputLines
except subprocess.CalledProcessError as e:
sys.exit('Stop: Error output: {} on cmd "{}"'.format(e.stderr, ' '.join(cmd)))
return e.stderr
Ошибка

Код: Выделить всё

FATAL:  database "bret" does not exist
что подразумевает, что использование подпроцесса означает, что он не может найти базу данных sdtests и ищет базу данных по умолчанию с именем пользователя bret.
Почему они не ведут себя одинаково?>

Подробнее здесь: https://stackoverflow.com/questions/798 ... subprocess
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»