shell运行python脚本输出到文件_如何重定向从python脚本运行的shell脚本输出

本问题已经有最佳答案,请猛点这里访问。

我正在从一个python脚本执行一些shell脚本。特定的shell脚本(代码的最后一行)调用用于运行配置单元查询以获取一些表信息,我希望将此输出重定向到一个文件。下面是我的python脚本的样子。

$ cat test.py

import argparse

from subprocess import call

parser = argparse.ArgumentParser()

parser.add_argument('-c','--cutoff',required=True)

args = parser.parse_args()

Table="elements_status_values_"+ args.cutoff

call(["clear"])

print">> Running the hive query"

call(["hive","-S","-e""select * from %s order by rand() limit 2;" % cutoffTable])

当我执行这个命令时,我会在终端上得到结果,但是我需要将输出重定向到python脚本中的一个文件,以便使用输出执行更多的操作。所以我基本上希望我的配置单元查询输出被重定向到一个文件,这样我就可以在同一个脚本中使用该文件进行其他操作。在shell脚本中,我们可以使用">"将输出重定向到一个文件,但是有没有一种方法可以让我们使用python完成这项工作?我已经搜索了与此相关的文章,但所有这些文章都将python脚本输出重定向到了一个我不想看到的文件。

stackoverflow.com/questions/4856583/…

查看subprocess.call的文档:您可以提供诸如stdout和stdin之类的参数。

with open('output.txt') as output_file:

call([your_stuff], stdout=output_file)

这是一种通用的方法-类似的方法也可以在C语言和许多其他语言中使用。

旧的python专用方法是使用subprocess.check_output而不是subprocess.call。

当前特定于python的方法是使用subprocess.run并从字面上检查其stdout:output = run(..., check=True, stdout=PIPE).stdout

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值