python中执行sed命令操作源文件时出现错误

我想在python中执行一个sed命令,第一种方法直接指定文件时,可以正确输出结果,但是第二种我打开文件操作的时候就有问题,不知道什么原因,求高手解答?(1)>>>sed... 我想在python中执行一个sed命令,第一种方法直接指定文件时,可以正确输出结果,但是第二种我打开文件操作的时候就有问题,不知道什么原因,求高手解答?
(1)
>>> sedcmd="sed -n \'s/{//g; p\' /qye/python/mytestpython/tmp.txt"
>>> a=os.popen(sedcmd)
>>> a.readlines()
["'copy_reg': <module 'copy_reg' from'/usr/lib64/python2.6/copy_reg.pyc'>, 'encodings': <module 'encodings'from '/usr/lib64/python2.6/encodings/__init__.pyc'>, 'site': <module'site' from '/usr/lib64/python2.6/site.pyc'>, '__builtin__...module 'exceptions'(built-in)>, 'abrt_exception_handler': <module 'abrt_exception_handler'from '/usr/lib64/python2.6/site-packages/abrt_exception_handler.pyc'>, 'os':<module 'os' from '/usr/lib64/python2.6/os.pyc'>}\n", '\n']
>>>

(2)
>>> withopen("/qye/python/mytestpython/tmp.txt") as srcfile:
... sedcmd="sed -n \'s/{//g;p\' srcfile"
... a=os.popen(sedcmd)
...
>>> sed: can't read srcfile: No such file ordirectory
展开
 我来答
sylecn
推荐于2016-09-07 · TA获得超过2991个赞
知道大有可为答主
回答量:1169
采纳率:57%
帮助的人:697万
展开全部

你的范例里面,srcfile是一个python object,放到sedcmd字符串里面,sed会把它当文件名处理,自然找不到文件。这个问题可以用subprocess解决。


#!/usr/bin/env python2
# coding=utf-8

"""
specify stdin when using subprocess
"""

import subprocess


def main():
    with open('/qye/python/mytestpython/tmp.txt', 'rb') as f:
        o = subprocess.check_output(["sed", "-n", "s/{//g; p"], stdin=f)
        # or:
        # o = subprocess.check_output("sed -n 's/{//g; p'", shell=True, stdin=f)


if __name__ == '__main__':
    main()
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式