Chinaunix

标题: subprocess能使用>吗 [打印本页]

作者: 追忆的风筝    时间: 2012-10-18 09:37
标题: subprocess能使用>吗
使用python的subprocess执行命令,如果命令有重定向符号>,那如何实现呢?
比如执行命令echo "abc" > abc.txt
当然,其实可以用subprocess对象的stdout属性获取输出结果,然后写入文件,先不借助这种方法。
作者: Hadron74    时间: 2012-10-18 11:38
回复 1# 追忆的风筝

弱弱的说,是不是可以使用os.system呢?
   
作者: 追忆的风筝    时间: 2012-10-18 11:53
回复 2# Hadron74

os.system()、os.popen()之类的方法可以执行命令,但官方已经不推荐使用了。


其实用subprocess还有个方法,stdout=文件对象,也可以直接将结果输出,但有什么方法用>吗?
   
作者: linux_c_py_php    时间: 2012-10-18 13:11
  1. [root@vps616 python]# cat output.txt
  2. hello world
  3. [root@vps616 python]# cat main.py
  4. #python2.7.3
  5. #coding=utf-8

  6. import subprocess

  7. subprocess.call("echo 'hello world' > output.txt", shell = True)
复制代码
默认是fork+exec, 程序路径依赖PATH.

加上shell后是fork + exec(/bin/bash -c command), 是由bash解析命令的, 所以支持重定向.
作者: syshack    时间: 2012-10-26 19:10
这个帮助里写的很明白~help(subprocess) 我想你懂的




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2