在Python中重定向stdout和/或sh

时间:2016-02-23 14:45:31

标签: python sh stdout io-redirection

我需要从rc.local运行我的Python程序,后台运行,sudo到用户帐户并且nohup'd。但是:

nohup sudo -u pi ~pi/doit.py >~pi/doit.out &

不起作用,因为shell将重定向应用于在root下运行的整个命令,因此文件由root创建,而不是我想要的用户pi。

所以我尝试在Python程序中进行重定向。举例来说,我做了:

#!/usr/bin/python    
import sys
import time    
sys.stdout = open('doit.out', 'w')
while True:
  print(time.ctime())
  sys.stdout.flush()
  time.sleep(1)

但这会在每次打印时截断文件,即使我将文件打开模式设置为append,以及是否包含flush()或使用python -u运行它。

所以: 1.为什么Python将truncatung保留为重定向的stdout,如何阻止它? 要么: 2.如何在命令行上获取重定向以对nohup和sudo执行的命令进行操作,而不是整个命令行? 要么: 对我的启发和启蒙都有上述答案。

问候 - 菲利普

0 个答案:

没有答案