nsd1905_py02_day03

备份练习

  1. # mkdir /tmp/demo/
  2. # cp -r /etc/security/ /tmp/demo/
  3. # 要备份的目录是/tmp/demo/security,备份的目标是/tmp/demo/backup
  4. # mkdir /tmp/demo/backup

OOP:面向对象编程

术语

类:class。用来描述具有相同的属性和方法的对象的集合。

实例:对象。通过类创建出具体的实例。

方法:类中的函数。

组合

两个类明显不同,其中一个类是另一个类的组件,使用组合。

子类

当两个类有很多相同,只有部分不同时,采用子类。通过父类派生子类,子类继承于父类。

子类可以有多个父类。子类将会继承所有父类的方法。如果有同名方法,查找顺序是自下向上,自左向右。

特殊方法

在class中,有很多以双下划线开头、结尾的方法,这些方法称作magic,魔法方法。常用的有三个魔法方法。

正则表达式

示例,为mac地址添加冒号

  1. 192.168.1.1 00000C123456
  2. 192.168.1.2 52541B9C23A3
  3. # 思路:1、定位mac地址 2、每两个数字分一组 3、在组之间添加冒号
  4. # 1.行尾、12个任意字符
  5. # 2.每两个字符用()分组
  6. # 3.组之间加冒号
  7. :%s/\(..\)\(..\)\(..\)\(..\)\(..\)\(..\)$/\1:\2:\3:\4:\5:\6/
  1. >>> import re
  2. >>> re.match('f..', 'food') # 在food的开头区本f..匹配到,返回匹配对象
  3. <_sre.SRE_Match object; span=(0, 3), match='foo'>
  4. >>> print(re.match('f..', 'seafood')) # 没匹配到,返回None
  5. None
  6. >>> re.search('f..', 'seafood') # 在字符串中匹配f..
  7. <_sre.SRE_Match object; span=(3, 6), match='foo'>
  8. >>> m = re.search('f..', 'seafood')
  9. >>> m.group() # 取出匹配到的内容
  10. 'foo'
  11. >>> re.findall('f..', 'seafood is food')
  12. ['foo', 'foo']
  13. # finditer返回由匹配对象构成的生成器
  14. >>> for m in re.finditer('f..', 'seafood is food'):
  15. ... m.group()
  16. # 以句点或-作为分隔符,切隔字符串
  17. >>> re.split('\.|-', 'hello-world.tar.gz')
  18. ['hello', 'world', 'tar', 'gz']
  19. # 把字符串中的X替换成zzg
  20. >>> re.sub('X', 'zzg', 'Hi X. ni hao X.')
  21. 'Hi zzg. ni hao zzg.'
  22. # 如果有大量匹配的时候,把正则表达式模式先编译,会有更好的效率
  23. >>> patt = re.compile('f..')
  24. >>> m = patt.search('seafood')
  25. >>> m.group()
  26. 'foo'
  27. >>> patt.findall('seafood is food')
  28. ['foo', 'foo']