如何运行具有包含换行符的参数的进程?

时间:2019-03-28 02:02:30

标签: python-3.x subprocess quoting

我有一个结构如下的命令:
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)

0 个答案:

没有答案