我正在拨打 Popen 电话,如下所示。是的,我需要 shell=True。
f = tempfile.TemporaryFile(suffix = ".txt", prefix = "Result_", dir = tempfile.gettempdir(), delete = False)
pp = psutil.Popen(run, shell = True, stderr = f, stdin = subprocess.PIPE, stdout = subprocess.PIPE).
(data, err) = pp.communicate()
我的运行命令有点复杂,但基本上它在函数下方运行,该函数又运行报告并写入文件。
def query():
pickledef = sys.argv[1:]
pickledef = ''.join(pickledef)
with open(pickledef, 'rb') as f:
querydef = pickle.load(f)
results = run_report(report_def)
out_file_name = to_file(results)
sys.stdout.write('<FILENAME>' + out_file_name)
我正在循环中进行 Popen 调用,并且打算批量运行多个查询。我尝试运行两个报告,它们运行得非常好,因为我看到文件是使用输出结果创建的。但是,由于某些未知原因,程序卡住了(我认为是在通信())。我知道如果预期输出很大,通信不是最佳选择,但我已经通过将结果写入文件来解决这个问题。所以我有点迷失为什么这不起作用。任何帮助表示赞赏。如果有任何不清楚的地方,请告诉我。
谢谢