将os.system输出写入文件

时间:2013-08-12 11:48:59

标签: python coding-style

基本上,我想将os.system结果输出到基于sys.argv输入的文件。请参阅下面的代码。它抛出了错误:SyntaxError:语法无效。我的猜测是输出运算符>不接受变量?

#!/usr/bin/python
import os
import sys
nfile = sys.argv[1]
intfile=('/folder/folder/%s/%s.txt' % (nfile, nfile)) 

if os.path.isfile(intfile): # if file exist remove
    os.remove(intfile)
else: 
    os.system('sudo ovs-vsctl list-ports %s > %s' % (nfile, intfile)

1 个答案:

答案 0 :(得分:2)

os.system不赞成。 subprocess模块比os.system()更清晰,更安全,更强大。

import subprocess
with open(intfile, 'w') as outfile:
    subprocess.call(['sudo', 'ovs-vsctl', 'list-ports', nfile], stdout=outfile)