Python运行bash命令将数据保存到文件

时间:2016-07-05 14:39:16

标签: python bash

我试图在python中运行bash-command,其中bash-command将数据保存到文件而不是显示它。这种命令的一个例子是

$ echo 'foo' > bar.txt

目前我的代码如下所示

process = subprocess.Popen(bashCommand.split(), stdout=subprocess.PIPE)
process.communicate()

当我运行python-code时,不会生成bar.txt。有关如何从bash脚本保存数据的任何想法?不应仅保存数据。

2 个答案:

答案 0 :(得分:0)

使用print()。就那么简单。由于>命令,通常打印到控制台的任何内容都将打印到文件中。

~$ python3.5 your_script.py > bar.txt

如果您不想使用>运行python脚本,则需要使用python的文件操作将数据的字符串版本写入文件:

with open('bar.txt', 'w') as F: 
    F.write(data)

答案 1 :(得分:0)

默认情况下,subprocess.Popen()不通过shell运行命令,因此I / O重定向运算符没有特殊含义 - 它们被视为普通参数。实现目标的最简单方法是使用shell。使用Popen(),您将传递shell=True,并且拆分命令字符串:

process = subprocess.Popen(bashCommand, stdout=subprocess.PIPE, shell=True)

您还应该考虑subprocess.call()(Python 2)或subprocess.run()(Python 3)便捷功能是否为您带来任何好处。然而,目前尚不清楚他们是否这样做;特别是,在这两种情况下你都需要使用相同的shell参数。