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

Python07

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

你的范例里面,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()

把字符串变量和字面值连接起来,组成新的字符串。推荐3个方法:

对字符串进行单个字符索引时,无论是从前往后索引,还是从后往前索引,索引序号一定要在范围内,否则出错。

对字符串进行切片截取时,采用 str[start:end] 的方式。start,end可以正,可以负。且如果start标识的位置大于等于end标识的位置,则截取字符串为空。start,end超出字符串的极限位置,那么就用最值。start默认为0,end默认为字符串长度。

一般的基于文本和行字符串处理,使用sed,awk,grep等工具就可以了,这些命令行工具用起来更便捷,但是也没有python的这些函数强大。比如没法实现非贪婪模式匹配。如下:

把连续的数字提取出来,其他的字符抛弃

python处理字符串,比linux命令要复杂一些,功能也更强大一些。对于简单的处理任务,linux命令已经足够,python为的是一些更复杂的处理操作。如果两者都会,岂不是更好?