我们在平常的工作中有时候需要对摸一个文件进行操作,比如在一个文件的每行前面添加##之类的,在shell中这个需求很简单,用sed单行就能搞定,下面我们来看看一个文件:

[root@host-192-168-209-128 py-sed]# cat a.txt
this is a text
this is use for python
this is also user for sed
this is a end test file
[root@host-192-168-209-128 py-sed]#

用sed的单行命令来搞定这个需求很简单,看下代码:

[root@host-192-168-209-128 py-sed]# sed 's/^/##/g' a.txt
##this is a text
##this is use for python
##this is also user for sed
##this is a end test file
[root@host-192-168-209-128 py-sed]#

看看,果然够强大的sed啊,下面我来给大家介绍介绍如何用python实现这个有时候经常需要的操作,直接上代码了:

[root@host-192-168-209-128 py-sed]# cat a.py
#!/usr/bin/env python

with open('a.txt') as f:
       con=f.readlines()
       for i in range(0,len(con)):
               print "###"+con[i].rstrip('\n')

代码实在很简单,看看效果如何吧:

[root@host-192-168-209-128 py-sed]# python a.py
###this is a text
###this is use for python
###this is also user for sed
###this is a end test file

呵呵,效果出来了吧,但是稍有缺陷,这个需要操作的对象文件我们是写死在代码里面的,如何把文件名作为参数传递给脚本呢,我们需要修改,以实现如下几个功能:
1. 需要把操作的文件作为参数传给脚本
2.需要对操作的对象进行判断,是否存在
3.如果脚本运行错误,需要有友好的提示效果
基于以上的需求,给出代码的最终版本,代码如下:

[root@host-192-168-209-128 py-sed]# cat tou.py
#!/usr/bin/env python
'''
edit by qhz
Email : world77@163.coom
This scrip to add "###" at every line for file

'''
def usage():
       print   '''
===============================================
This script to add "###" at every line for file
Use Example:
python script.py file
===============================================
'''
import sys
import os
if len(sys.argv) == 2:
        if os.path.isfile(sys.argv[1]):
                with open(sys.argv[1]) as f:
                       con=f.readlines()
                       for i in range(0,len(con)):
                              print '###'+con[i].strip('\n')
      else:
                print "==============================================="
                 print "Your input file name is not exit or not correct"
                 print "Please try again ,bye ..."
                 print "==============================================="
else:
          usage()
          exit()
[root@host-192-168-209-128 py-sed]#

下面来看看各种情况和效果:

[root@host-192-168-209-128 py-sed]# python tou.py

===============================================
This script to add "###" at every line for file
Use Example:
python script.py file
===============================================

[root@host-192-168-209-128 py-sed]# python tou.py a.tx
===============================================
Your input file name is not exit or not correct
Please try again ,bye ...
===============================================
[root@host-192-168-209-128 py-sed]# python tou.py a.txt
###this is a text
###this is use for python
###this is also user for sed
###this is a end test file
[root@host-192-168-209-128 py-sed]#

好了,这次的python介绍就到这里,我将为大家陆续模拟一些sed的简单功能,希望大家能喜欢

转载于:https://blog.51cto.com/world77/1348328

python模拟sed在每行添加##相关推荐

  1. python如何在exel中编程_如何使用Python以编程方式将行添加到现有Excel表中

    尽管有各种各样的pythonexcel操作库和资源,但我无法找到具体的解决方案.在 现在,我有一个表格存在的Excel模板文件.我想编写一个Python程序来填充这个表.对于任何现有的Excel库都可 ...

  2. python终端指令大全_使用python模拟命令行终端的示例

    可以对?显示帮助信息,需要立即获取输入的字符,因此需要用到termios模块 另外需要对tab键做处理,当按下tab键时可以进行自动补全 #! /usr/bin/env python # coding ...

  3. 怎么把竖列中的数相加python_关于python中pandas.DataFrame对行与列求和及添加新行与列示例代码...

    pandas是python环境下最有名的数据统计包,而DataFrame翻译为数据框,是一种数据组织方式,这篇文章主要给大家介绍了关于python中pandas.DataFrame对行与列求和及添加新 ...

  4. python对文件每行添加一个符号或逗号

    问题: 处理数据的时候,发现给出的内容非json格式,如图,需要处理成json,在每行添加一个逗号,并在数据开始结束添加"["和"]" 处理: 读取旧文件每一行 ...

  5. 潜心专研Python模拟登陆专题,实现网易云音乐自动签到!这项目居然只值三百?

    前言: 时隔三周没有和大家见过面了,最近在研究python模拟登陆专题,话不多说,让我们愉快地开始实现模拟登陆实现网易云自动签到 开发工具 **Python****版本:**3.6.4 相关模块: D ...

  6. linux在指定行添加内容,linux下利用shell在指定的行添加内容的方法

    linux下利用shell在指定的行添加内容的方法 在linux的一些配置中总会要进行某个文件中的某行的操作,进行增加,修改,删除等操作. 而这里主要是进行的是指定的行添加数据的操作: 脚本如下: s ...

  7. Python模拟太阳-地球-月亮运动模型

    作者 | Charles,cv方向在读研究生.[Charles 的皮卡丘]专注于分享有趣好玩的Python小项目(AI.爬虫等等). 来源 | Charles 的皮卡丘 编辑 | Jane [导语]春 ...

  8. sed替换每行最后一个字符

    2019独角兽企业重金招聘Python工程师标准>>> echo 123456789 | sed -n 's/\(.*\)\(.\)/\1/g' 这种方法意思是sed分组匹配.怎么分 ...

  9. python 通过title判断_利用Python模拟GitHub登录

    点击关注,我们共同每天进步一点点! 最近学习了Fiddler抓包工具的简单使用,通过抓包,我们可以抓取到HTTP请求,并对其进行分析.现在我准备尝试着结合Python来模拟GitHub登录. Fidd ...

最新文章

  1. 在Win10下如何实现VS下工程代码的开机自启功能
  2. GraalVM Internship Program
  3. TTYL的完整形式是什么?
  4. 拓端tecdat|R语言近似贝叶斯计算MCMC(ABC-MCMC)轨迹图和边缘图可视化
  5. python插入排序
  6. yylabel html富文本,YYLabel计算富文本高度-膜拜大神
  7. php九九乘法表带表格,九九乘法表打印(js打印九九乘法表用表格显示)
  8. kettle使用httpClient获取ES索引数据
  9. JS特效之超级好看的鼠标小尾巴
  10. vue报错 | Duplicate keys detected: ‘0’. This may cause an update error.
  11. 2020 EBC徒步功课做好 好好工作心态
  12. 网站调用服务器字体,网站调用字体库
  13. 2022年第十三届蓝桥杯省赛C/C++B组个人题解
  14. WebGL简易教程(十五):加载gltf模型
  15. 【前端灵魂脚本语言JavaScript⑤】——JS中数组的使用
  16. java exls_java excel类
  17. c++单链表 一元多项式求和_C++一元多项式相加
  18. 一个获取电脑显示器序列号的VBS脚本
  19. URL重写有几种方式
  20. throw inside finally block

热门文章

  1. Qt学习(三):事件、定时器、事件过滤器
  2. rxjava背压_如何形象地描述RxJava中的背压和流控机制?
  3. 方钢管弹性模量计算方式_箱形系梁贝雷支架受力计算书
  4. android sdl,Android下SDL2实现五子棋游戏
  5. es dsl java api_求帮助将dsl翻译为java的API
  6. TensorFlow 笔记4--使用tensorboard
  7. 时间序列总结.pptx
  8. 别人家的孩子!高校博士实现Nature、Science双发!
  9. 【深度学习】一文弄懂CNN及图像识别(Python)
  10. 【机器学习】为什么在信用风险建模中首选树模型?