【发布时间】:2019-08-02 04:53:28
【问题描述】:
我正在尝试使用 subprocess.Popen() 在我的脚本中运行命令。代码是:
output = Popen(["hrun DAR_MeasLogDump " + log_file_name], stdout=subprocess.PIPE, stderr = subprocess.PIPE, executable="/bin/csh", cwd=cwdir, encoding='utf-8')
当我打印输出时,它会打印出创建的 shell 输出,而不是列表中的实际命令。我尝试摆脱 executable='/bin/csh',但 Popen 甚至无法运行。
我也尝试过使用subprocess.communicate(),但也没有用。我还将获得 shell 输出,而不是实际的命令运行。
由于安全问题,我想完全避免使用shell=True。
编辑:在许多不同的尝试中,“hrun”没有被识别。 “hrun”是正在调用的 Pearl 脚本,DAR_MeasLogDump 是操作,log_file_name 是脚本将调用其操作的文件。是否需要进行任何类型的设置或配置才能识别“hrun”?
【问题讨论】:
-
您是否尝试过按原样将其设为列表:
["hrun DAR_MeasLogDump", log_file_name] -
是的,我试过了,但是没有任何东西写入“输出”。当我在命令行上运行命令时,我希望将输出存储在“输出”中。
标签: python subprocess popen