Как запустить процесс с аргументом, содержащим новые строки? - PullRequest
2 голосов
/ 28 марта 2019

У меня есть команда, которая имеет структуру:
xrdcp "root://server/file?authz=ENVELOPE&Param1=Val1" local_file_path
Проблема заключается в том, что ENVELOPE в тексте, который должен быть заключен в кавычки в командной строке и содержит много новых строк, я не могу использовать repr, так какзаменит новую строку на \ n Более того, кажется, что подпроцесс автоматически использует repr для элементов из аргументов списка

В bash эта команда обычно запускается с
xrdcp "root://server/file?authz=$(<ENVELOPE)&Param1=Val1" local_file

Итак,Есть ли способ запустить команду, сохраняя при этом новые строки в аргументах?
Спасибо!

Позже Редактировать:
Мой фактический код:

envelope = server['envelope']
complete_url = "\"" + server['url'] + "?" + "authz=" + "{}".format(server['envelope']) + xrdcp_args + "\""
xrd_copy_list = []
xrd_copy_list.extend(xrdcp_cmd_list)
xrd_copy_list.append(complete_url)
xrd_copy_list.append(dst_final_path_str)
xrd_job = subprocess.Popen(xrd_copy_list, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = xrd_job.communicate()
print(stdout)
print(stderr)
...