如何从python脚本

时间:2016-06-27 11:23:29

标签: python shell

我正在从python脚本执行一些shell脚本。一个特定的shell脚本(代码的最后一行)调用用于运行Hive查询以获取一些表信息,我想将此输出重定向到一个文件。这是我的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脚本中的文件,以便使用输出执行更多操作。所以我基本上希望将我的Hive查询输出重定向到一个文件,以便我可以将该文件用于同一脚本中的其他操作。在shell脚本中,我们可以使用'>'重定向输出到一个文件,但有没有办法,我们可以使用python完成这个? 我搜索了与此相关的帖子,但所有这些帖子都将python脚本输出重定向到我不想要的文件。

1 个答案:

答案 0 :(得分:3)

结帐$market_hash_name = str_replace(' ', '%20', $market_hash_name); if (isset($json_price_file["lowest_price"])) { #your code... } :您可以提供subprocess.callstdout等参数。

stdin

这是一种通用的方式 - 类似的方法也适用于C和许多其他语言。

特定于旧python的方法是使用with open('output.txt') as output_file: call([your_stuff], stdout=output_file) 而不是subprocess.check_output

当前特定于python的方法是使用subprocess.call并逐字检查其标准输出:subprocess.run