如何将终端输出写入文件

时间:2014-04-29 12:02:15

标签: python

我想将脚本的结果保存到文件中。脚本示例:

#!/usr/bin/env python
i=0
while i<10:
  a=raw_input('Write a number')
  print 'Result%s'%str(2*a)
  i+=1

我想保存到文件打印值。我知道我可以在脚本f=open()...中执行此操作,但我想使用终端中的输出来执行此操作。我读到我可以使用模块subprocess,但我不知道它是正确的。

3 个答案:

答案 0 :(得分:10)

IMO这是正确的pythonic方式,没有依赖系统shell:

import sys
f = open("test.out", 'w')
sys.stdout = f
print "test"
f.close()

在python中,您可以更改默认的stdout对象。你只需要为sys.stdout分配你想要的任何东西。我认为该对象只需要定义write方法(但不是绝对确定)。

这样做:

import sys
f = open("test.out", 'w')
sys.stdout = f

i=0
while i<10:
  a=raw_input('Write a number')
  print 'Result%s'%str(2*a)
  i+=1

f.close()

0605002建议支持他使用的语法的系统基本相同,但是在纯python中实现并且应该更便携。

更多的pythonic方式,根据评论建议:

import sys

with open("test.out", 'w') as f:
  sys.stdout = f

  i=0
  while i<10:
    a=raw_input('Write a number')
    print 'Result%s'%str(2*a)
    i+=1

当然,您可以重构您的“客户端代码”并使其成为一种功能。

答案 1 :(得分:9)

您可以使用终端中的>将输出重定向到文件:

python your_script.py > output.txt

答案 2 :(得分:1)

python file.py &> out.txt

这会将所有输出(包括错误)定向到out.txt。