configparser用于处理特定格式的文件必威:,其本

Python模块知识8:configparser、压缩模块,pythonconfigparser

一、configparser模块

configparser用于拍卖特定格式的文件,其本质上是利用open来操作文件。

文件格式如:

1.骨干的读取配置文件

-read(filename) 直接读取ini文件内容

-sections() 得到全数的section,并以列表的花样返回

-options(section) 得到该section的所有option

-items(section) 获得该section的兼具键值对

-get(section,option) 得到section中option的值,返回为string类型

-getint(section,option) 获得section中option的值,再次来到为int类型,还也可以有照看的getboolean()和getfloat() 函数。

2.中坚的写入配置文件

-add_section(section) 增添四个新的section

-set( section, option, value) 对section中的option进行设置,供给调用write将内容写入配置文件。

案例1:取节点、键值对、键、键上边包车型大巴值

import configparser #导入模块
config=configparser.ConfigParser() #必须的装载语句
config.read('black.txt',encoding='utf-8')#从文件中读取内容
ret=config.sections()#取所有的节点
ret2=config.items("sec1")#取节点值1下的所有的键值对
ret3=config.options('sec1')#获取节点值1下的所有的键
ret4=config.get('sec1',"k1")#获取节点值1,k1键下的值
print(ret)#执行结果['sec1', 'sec2', 'sec3']
print(ret2)#执行结果[('k1', 'v1    # 值'), ('k2', 'v2       # 值')]
print(ret3)#执行结果['k1', 'k2']
print(ret4)#执行结果v1    # 值

实行结果:

案例2:操作节点

#增加节点、键值对

import configparser #导入模块
config=configparser.ConfigParser() #必须的装载语句
config.add_section("sec4")#添加节点
config.set("sec4","k2","jjj")#添加节点下的键值对
config.write(open('black.txt','a'))

进行结果:

案例3:检查节点

#自己钻探节点是不是存在

import configparser #导入模块
config=configparser.ConfigParser() #必须的装载语句
config.read('black.txt',encoding='utf-8')#从文件中读取内容
#检查是否有某个节点
has_sec=config.has_section("sec2")#检查是否有节点“sec2”
print(has_sec)

执行结果:TRUE

案例4:删除节点

#删去节点照旧节点下的键值对

import configparser #导入模块
config=configparser.ConfigParser() #必须的装载语句
config.read('black.txt',encoding='utf-8')#从文件中读取内容
config.remove_section('sec3')#删除节点
# config.remove_option('sec3','k1')#删除节点
config.write(open('black.txt', 'w'))

二、压缩zipfile模块

1)压缩

import zipfile

z=zipfile.ZipFile('a.zip','w')

z.write('hh.xml')

z.write('hhnew3')

z.close()

2)解压缩

import zipfile

z=zipfile.ZipFile('a.zip','r')

z.extractall()#解压全体

for item in z.namelist():

    print(item,type(item))

z.close()

三、tar文件夹解压

1)压缩

import  tarfile

tar = tarfile.open('your.tar','w')#压缩tar文件

tar.add('hh.xml', arcname='hh1.xml')#能够把hh压缩时改名叫hh1

tar.add('hhnew3', arcname='hh3')

tar.close()

2)解压

tar = tarfile.open('your.tar','r')

#tar.extractall()  # 可安装解压全部的标题

#打字与印刷全体的对象

for item in tar.getmembers():

    print(item,type(item))

#单个解压缩文件

obj=tar.getmember("hh1.xml")

tar.extract(obj)

tar.close()

shutil.move('folder1','folder3')

xml相关操作

解析xml文件

  1. from xml.etree import ElementTree as ET

  2. #直白解析xml文件

  3. tree = ET.parse('xml_test.xml')

  1.  

  2. #获取xml文件的根节点

  3. root = tree.getroot()

  4. print(root)

  5. print(root.tag)

  6. print(root.attrib)

  7. """

  8. 输出:

  9. <Element 'data' at 0x00000000006D0688>

  10. data

  11. {'title_2': 'test_2', 'title_1': 'test_1'}

  12. """

浅析字符串

  1. from xml.etree import ElementTree as ET

  2.  

  3. #张开文件,读取xml内容

  4. str_xml = open('xm_test.xml','r').read()

  5.  

  6. #将字符串分析成xml特殊指标,root代指xml文件的根节点

  1. root = ET.XML(str_xml)

遍历xml文档的保有剧情

  1. from xml.etree import ElementTree as ET

  2. #直接剖判xml文件

  3. tree = ET.parse('xml_test.xml')

  1.  

  2. #收获xml文件的根节点

  3. root = tree.getroot()

  4. #遍历xml文档的第二层

  5. for child in root:

  6.     #第二层节点的价具名称和标签属性

  1.     print(child.tag,child.attrib)
  1.     #遍历xml文书档案的第三层

  2.     for i in child:

  3.         #其三层节点的标签字称和内容

  1.         print(i.tag,i.text)

  2. """

  3. 输出:

  4. country {'name': 'Liechtenstenin'}

  1. rank 2

  2. year 2023

  3. gdppc 141100

  4. neighbor None

  5. neighbor None

  6. country {'name': 'Sinagapore'}

  7. rank 5

  8. year 2026

  9. gdppc 59900

  10. neighbor None

  11. country {'name': 'Panama'}

  12. rank 69

  13. year 2026

  14. gdppc 13600

  15. neighbor None

  16. neighbor None

  17. """

修改xml

剖析字符串情势开展改换

  1. from xml.etree import ElementTree as ET

  2. str_xml = open('xml_test.xml','r').read()

  3. root = ET.XML(str_xml)

  4.  

  5. #获取顶层标签

  6. print(root.tag)

  7.  

  8. #巡回全部的year节点

  9. for node in root.iter('year'):

  10.     #将year节点中的内容自增黄金时代

  11.     new_year = int(node.text) + 1

  12.     node.text = str(new_year)

  13.  

  14.     #设置属性

  15.     node.set('name','alex')

  16.     node.set('age','19')

  17.  

  18.     #去除属性

  19.     del node.attrib['name']

  20.  

  21. #履新文件

  22. tree = ET.ElementTree(root)

  23. tree.write("new_xml_test.xml",encoding='utf-8')

浅析文件措施展开退换

一向调用tree.write写入就可以。

  1. from xml.etree import ElementTree as ET

  2. tree = ET.parse('xml_test.xml')

  1. root = tree.getroot()

  2.  

  3. """

  4. 操作

  5. """

  6.  

  7. #更新文件

  8. tree.write("new_xml_test2.xml",encoding='utf-8')

增多节点

  1. from xml.etree import ElementTree as ET

  2. tree = ET.parse('xml_test.xml')

  1. root = tree.getroot()

  2.  

  3. ele = ET.Element('Alex',{'k1':'v1'})

  1. ele.text = "test"

  2. root.append(ele)

  3.  

  4. tree.write("new.xml",encoding='utf-8')

结果new.xml:

  1. <data title_1="test_1" title_2="test_2">

  2.  

  3. """

  4. 原内容

  5. """

  6.  

  7. <Alex k1="v1">test</Alex></data>

是因为原生保存xml时暗中认可无缩进,假诺要安装缩进须求改进保存方法。

  1. from xml.etree import ElementTree as ET

  2. from xml.dom import minidom

  3.  

  4. def prettify(elem):

  5.     """

  6.     将节点转变来字符串,并增多缩进

  1.     :param elem:

  2.     :return:

  3.     """

  4.     rough_string = ET.tostring(elem,'utf-8')

  5.     reparsed = minidom.parseString(rough_string)

  6.     return reparsed.toprettyxml(indent="t")

  7.  

  8. #成立根节点

  9. root = ET.Element("family")

  10.  

  11. #成立大外甥

  12. # son1 = ET.Element('son',{'name':'儿1'})

  13. son1 = root.makeelement('son',{'name':'儿1'})

  14. #创制三外甥

  15. # son2 = ET.Element('son',{'name':'儿2'})

  16. son2 = root.makeelement('son',{'name':'儿2'})

  17.  

  18. #在儿子中创制2个外孙子

  19. # grandson1 = ET.Element('grandson',{'name':'儿11'})

  20. grandson1 = root.makeelement('grandson',{'name':'儿11'})

  21. # grandson2 = ET.Element('grandon',{'name':'儿12'})

  22. grandson2 = root.makeelement('grandon',{'name':'儿12'})

  23.  

  24. son1.append(grandson1)

  25. son2.append(grandson2)

  26.  

  27. #把幼子增多到根节点

  28. root.append(son1)

  29. root.append(son2)

  30.  

  31. raw_str = prettify(root)

  32.  

  33. f = open('family.xml','w',encoding='utf-8')

  34. f.write(raw_str)

  35. f.close()

family.xml:

  1. <?xml version="1.0" ?>

  2. <family>

  3.    <son name="儿1">

  4.       <grandson name="儿11"/>

  5.    </son>

  6.    <son name="儿2">

  7.       <grandon name="儿12"/>

  8.    </son>

  9. </family>

示例
压缩单个文件并打包

tar.close()

self是什么?

self是八个python自动传值的参数,那二个目的推行办法,self就是哪个人。

obj1 = SQLHelper()

obj1.hhost = "1xxx.xxx.xxx"

obj1.uusername = "xxxx"

obj1.passwd = "xxxx"

obj1.fetch("sql") #self==obj1

 

obj2 = SQLHelper()

obj2.hhost = "2xxx.xxx.xxx"

obj2.uusername = "xxxx"

obj2.passwd = "xxxx"

obj2.fetch("sql") #self==obj2

def addfile(zipfilename, dirname):
    if os.path.isfile(dirname):
        with zipfile.ZipFile(zipfilename, 'a') as z:
            z.write(dirname)
    else:
        with zipfile.ZipFile(zipfilename, 'a') as z:
            for root, dirs, files in os.walk(dirname):
                for single_file in files:
                    if single_file != zipfilename:
                        filepath = os.path.join(root, single_file)
                        z.write(filepath)

addfile('a.zip', 'test.txt')

将文件内容拷贝到另一个文件中

构造方法

类中有叁个奇特的主意__init__,类()自动被推行。

  1. class SQLHelper:

  2.     def __init__(self,a1,a2,a3):

  1.         self.hhost = a1

  2.         self.uusername = a2

  3.         self.passwd = a3

  4.         print("自动推行init")

  5.     def fetch(self, sql):

  6.         #链接数据库

  7.         print(self.hhost)

  8.         print(self.uusername)

  9.         print(self.passwd)

  10.         print(sql)

  11.     def create(self,sql):

  12.         pass

  13.     def remove(self,nid):

  14.         pass

  15.     def modify(self,name):

  16.         pass

  17. obj1 = SQLHelper("1xxx.xxx.xxx","xxxx","xxxx")

  18. obj1.fetch("select * from A")

  19. obj2 = SQLHelper("2xxx.xxx.xxx","xxxx","xxxx")

  20. obj2.fetch("select * form A")

  21. 输出:

  22. 自动推行init

  23. 1xxx.xxx.xxx

  24. xxxx

  25. xxxx

  26. select * from A

  27. 电动施行init

  28. 2xxx.xxx.xxx

  29. xxxx

  30. xxxx

  31. select * form A

面向对象三大特点:封装、继承、多态。

shutil.copytree('/tmp/mysql','/tmp/mysql2') mysql2这个目标目录不需要预先创建

base_name: 压缩包的文本名,也足以是压缩包的路子。只是文件名时,则保留至当前目录,不然保存至钦赐路径,

哪些时候利用面向对象?

当一些函数具有相通参数时,能够利用面向对象的措施,将参数值一遍性打包到指标中,方便以往去对象中取值。

 

logger: 用于记录日志,经常是logging.Logger对象

call

获得状态码,0不荒谬。

  1. import subprocess

  2.  

  3. #shell=False命令传入方式为列表

  4. ret = subprocess.call(["ls","-l"],shell=False)

  5.  

  6. #shell=True命令传入形式为字符串

  1. ret = subprocess.call("ls -l",shell=True)
t = tarfile.open('/tmp/a.tgz', 'w:gz')
t.add('/tmp/aa.py',arcname='aa.py')
t.add('/tmp/22.txt',arcname='22.txt')
t.close()

shutil.copyfile(src, dst)

shutil

高档的文件、文件夹、压缩包管理模块。

shutil.copyfileobj(ferc,fdst[,length])

将文件内容拷贝到另三个文件中

  1. import shutil

  2.  

  3. shutil.copyfileobj(open('old.xml','r'),open('new.xml','w'))

shuit.copyfile(src,dst)

拷贝文件

  1. shutil.copyfile('f1.log','f2.log')
import tarfile
import os

with tarfile.open('/tmp/a.tgz', 'w:gz') as tar:
    tar.add('/tmp/aa.py',arcname='aa.py')
    tar.add('/tmp/22.txt',arcname='22.txt')

format: 压缩包类别,“zip”, “tar”, “bztar”,“gztar”

configparser模块

configparser用于拍卖特定格式的文件,其本质是应用open来操作文件。

文件a.txt

  1. [section1]

  2. k1 = 123

  3. k2:v2

  4.  

  5. [section2]

  6. k1 = 234

加载文件a.txt

  1. import configparser

  2.  

  3. config = configparser.ConfigParser()

  1. config.read('a.txt',encoding='utf-8')

对文件有关操作

  1. import configparser

  2.  

  3. config = configparser.ConfigParser()

  1. config.read('a.txt',encoding='utf-8')
  1.  

  2. #获得具有节点

  3. ret = config.sections()

  4. print(ret)

  5.  

  6. #获得内定节点下的有着键值对

  7. ret = config.items('section1')

  8. print(ret)

  9.  

  10. #收获内定节点下有所的键

  11. ret = config.options('section1')

  1. print(ret)

  2.  

  3. #获得钦定节点下钦赐key的值

  4.  

  5. ret = config.get('section1','k1')

  6. #转换成int

  7. # ret = config.getint('section1','k1')

  1. #转换成float

  2. # ret = config.getfloat('section1','k1')

  3. #转换成boolean

  4. # ret = config.getboolean('section1','k1')

  5.  

  6. print(ret)

  7.  

  8. #检查、删除、设置钦命组内的键值对

  1.  

  2. #检查

  3. has_opt = config.has_option('section1')

  4. print(has_opt)

  5.  

  6. #增加节点

  7. config.add_section('SEC_1')

  8. config.write(open('a.txt','w'))

  9.  

  10. #删除节点

  11. config.remove_section('SEC_1')

  1. config.write(open('a.txt','w'))

  2.  

  3. #检查、删除、设置钦赐组内的键值对

  1.  

  2. #检查

  3. has_opt = config.has_option('section1','k1')

  4. print(has_opt)

  5.  

  6. #删除

  7. config.remove_option('section1','k1')

  1. config.write(open('a.txt','w'))

  2.  

  3. #设置

  4. config.set('section1','k10','123')

  5. config.write(open('a.txt','w'))

注意:python2.6不支持with xx as的写法,不管是zipfile 还是 tarfile 模块
t = tarfile.open('/tmp/a.tgz', 'w:gz')
t.add('/tmp/aa.py',arcname='aa.py')
t.add('/tmp/22.txt',arcname='22.txt')
t.close()

shutil.copy('f1.log','f2.log')

函数式编制程序和面向对象编制程序完成出殡和安葬邮件效率。

函数完毕:

  1. def mail(email,message):

  2.     print("发送")

  3.    return True

  4.  

  5. mail("xxxx.@126.com","hello")

面向对象达成:

  1. class Foo:

  2.     #方法

  3.    def mail(self,email,message):

  1.        print("发送")

  2.       return True

  3.  

  4. #调用

  5. #1、制造对象,类名()

  6. obj = Foo()

  7. #2、通过对象去实施办法

  8. obj.mail("xxxx.@126.com","hello")

def addfile(tarfilename, dirname):    # tarfilename是压缩包名字,dirname是要打包的目录
    if os.path.isfile(dirname):
        with tarfile.open(tarfilename, 'a') as tar:
            tar.add(dirname)
    else:
        with tarfile.open(tarfilename, 'a') as tar:
            for root, dirs, files in os.walk(dirname):
                for single_file in files:
                    # if single_file != tarfilename:
                    filepath = os.path.join(root, single_file)
                    tar.add(filepath)

addfile('t.tar', 'ttt.txt')
addfile('t.tar', 'ttt')

shutil.copy2('f1.log','f2.log')

多继承

  1. class C1:

  2.     def f1(self):

  3.         pass

  4.  

  5. class C2:

  6.     def f2(self):

  7.         pass

  8.  

  9. class C3(C2,C1):

  10.     pass

  11.  

  12. obj = C3()

 

  1. class C1:

  2.     def f1(self):

  3.         print("C1.f1()")

  4.  

  5. class C2:

  6.     def f1(self):

  7.         print("C2.f1()")

  8.  

  9. class C3(C2,C1):

  10.     pass

  11.  

  12. obj = C3()

  13. obj.f1()

  14. 输出:

  15. C2.f1()

 

  1. class C0:

  2.     def f1(self):

  3.         print("C0.f1()")

  4.  

  5. class C1():

  6.     def f1(self):

  7.         print("C1.f1()")

  8.  

  9. class C2(C0):

  10.     def f2(self):

  11.         print("C2.f1()")

  12.  

  13. class C3(C2,C1):

  14.     pass

  15.  

  16. obj = C3()

  17. obj.f1()

  18. 输出:

  19. C0.f1()

 

  1. class C_2:

  2.     def f1(self):

  3.         print("C_2.f1()")

  4.  

  5. class C_1(C_2):

  6.     def f1(self):

  7.         print("C_1.f1()")

  8.  

  9. class C0(C_2):

  10.     def f2(self):

  11.         print("C0.f1()")

  12.  

  13. class C1(C_1):

  14.     def f1(self):

  15.         print("C1.f1()")

  16.  

  17. class C2(C0):

  18.     def f2(self):

  19.         print("C2.f1()")

  20.  

  21. class C3(C2,C1):

  22.     pass

  23.  

  24. obj = C3()

  25. obj.f1()

  26. 输出:

  27. C1.f1()

批量装进压缩操作
make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0,dry_run=0, owner=None, group=None, logger=None)  #压缩打包
base_name:    压缩打包后的公文名也许路径名
format:          压缩只怕打包格式    "zip", "tar", "bztar"or "gztar"
root_dir :         将哪个目录也许文件打包(相当于源文件卡塔尔
base_dir :         将哪个目录也许文件打包(也正是源文件卡塔尔
root_dir 和 base_dir 暗许设置为当前目录,root_dir 和 base_dir 平时能够以为是一模二样的

拷贝文件

封装

面向对象的顺序设计中,某些类把所急需的数码(类的性质卡塔 尔(阿拉伯语:قطر‎和对数码的操作(类的一言一动卡塔尔全体都封装在类中,分小名为类的成员变量和方法(成员函数卡塔尔国。这种把成员变量和分子函数封装在一同的编制程序性子称为封装。

  1. class c1:

  2.     def __init__(self,name,obj):

  1.         self.name = name

  2.         self.obj = obj

  3.  

  4. class c2:

  5.     def __init__(self,name,age):

  1.         self.name = name

  2.         self.age = age

  3.  

  4.     def show(self):

  5.         print(self.name)

  6.  

  7. class c3:

  8.     def __init__(self,a1):

  9.         self.money = 123

  10.         self.aaa = a1

  11.  

  12.  

  13. c2_obj = c2('aa',11)

  14.  

  15. c1_obj = c1("alex",c2_obj)

  16. print(c1_obj.obj.age)

  17.  

  18. c3_obj = c3(c1_obj)

  19. print(c3_obj.aaa.obj.age)

  20. 输出:

  21. 11

  22. 11

 

二. 使用

zipfile、tarfile

zipfile创造压缩包

  1. import zipfile

  2.  

  3. #压缩

  4. z = zipfile.ZipFile('test.zip','a')

  1. z.write('new.xml')

  2. z.write('family.xml')

  3. z.close

zipfile解压压缩包

  1. #解压

  2. z = zipfile.ZipFile('test.zip','r')

  1.  

  2. #解压全体

  3. # z.extractall()

  4.  

  5. #解压单个文件

  6. z.extract("new.xml")

  7.  

  8. #拿到压缩包的成员

  9. for item in z.namelist():

  10.     print(item)

  11.  

  12. z.close()

tarfile创立压缩包

  1. import tarfile

  2.  

  3. #压缩

  4. tar = tarfile.open("test.tar",'w')

  5. #arcname重命名

  6. tar.add('test.py',arcname='test_1.py')

  1. tar.add('xml_test.py',arcname='xml_test.py')
  1. tar.close()

tarfile解压压缩包

  1. tar = tarfile.open('test.tar','r')
  1.  

  2. #可设置解压路线

  3. # tar.extractall()

  4.  

  5. for item in tar.getmembers():

  6.     print(item,type(item))

  7.  

  8. obj = tar.getmember("test_1.py")

  9. print(obj,type(obj))

  10. tar.extract(obj)

  11.  

  12. tar.close()

zipfile模块
ZipFile类
zipfile.ZipFile(zipfilename, 'a')
a:添Gavin件到压缩包
r:读取压缩包内容
w:生成五个回退包

owner: 客商,暗许当前客户

check_output

实施命令,假设状态码是0,则赶回试行结果,不然抛出分外。

  1. ret = subprocess.check_output("ls -l",shell=True)

因为用的旧的语法,所以能够出去提醒

创设压缩包并重返文件路线,例如:zip、tar

XML模块

xml是兑现分化语言或程序之间开展数据交流的商酌。

文件xml_text.xml

  1. <data>

  2.     <country name="Liechtenstenin">

  3.         <rank update="yes">2</rank>

  4.         <year>2023</year>

  1.         <gdppc>141100</gbppc>
  1.         <neighbor direction="E" name="Austria"/>

  2.         <neighbor direction="W" name="Switzerland"/>

  3.     </country>

  4.     <country name="Sinagapore">

  5.         <rank update="yes">5</rank>

  6.         <year>2026</year>

  1.         <gdppc>59900</gdppc>
  1.         <neighbor direction="N" name="Malaysia"/>

  2.     </country>

  3.     <country name="Panama">

  4.         <rank update="yes">69</rank>

  5.         <year>2026</year>

  1.         <gdppc>13600</gdppc>
  1.         <neighbor direction="W" name="Costa Rica"/>

  2.         <neighbor direction="E" name="Costa Rica"/>

  3.     </country>

  4. </data>

with tarfile.open('a.tar', 'r') as tar:
    print(tar.getmembers())     # 查看压缩包内文件成员
    tar.extractall(path='/tmp/')  # 解压全部    

shutil.rmtree('folder1')

check_call

试行命令,倘诺实行意况码是0,则再次来到0,不然抛出格外。

  1. ret = subprocess.check_call("ls -l",shell=True)

python2.6不支持with xx as的写法github地址:

shutil.copymode('f1.log','f2.log')

类和对象

1、创建类:

class 类名:

def 方法名(self,xxx):

pass

2、创造对象

对象 = 类名()

3、通过对象试行形式

对象.方法名(xxx)

函数式

def fetch(host,username,passwd,sql):

pass

def create(host,username,passwd,sql):

pass

def remove(host,username,passwd,sql):

pass

def modify(host,username,passwd,sql):

pass

fetch(…)

面向对象:

class SQLHelper:

def fetch(self,host,username,passwd,sql):

pass

def create(self,host,username,passwd,sql):

pass

def remove(self,host,username,passwd,nid):

pass

def modify(self,host,username,passwd,name):

pass

obj = SQLHelper()

obj.fetch(…)

面向对象优化:

class SQLHelper:

def fetch(self, sql):

pass

def create(self,sql):

pass

def remove(self,nid):

pass

def modify(self,name):

pass

obj = SQLHelper()

obj.hhost = "xxx.xxx.xxx"

obj.uusername = "xxxx"

obj.passwd = "xxxx"

obj.fetch("sql")

  1. class SQLHelper:

  2.     def fetch(self, sql):

  3.         #链接数据库

  4.         print(self.hhost)

  5.         print(self.uusername)

  6.         print(self.passwd)

  7.         print(sql)

  8.     def create(self,sql):

  9.         pass

  10.     def remove(self,nid):

  11.         pass

  12.     def modify(self,name):

  13.         pass

  14. obj = SQLHelper()

  15. obj.hhost = "xxx.xxx.xxx"

  16. obj.uusername = "xxxx"

  17. obj.passwd = "xxxx"

  18. obj.fetch("select * from A")

  19. 输出:

  20. xxx.xxx.xxx

  21. xxxx

  22. xxxx

  23. select * from A

    
    
解压文件

shutil.move(src, dst)

单继承

  1. class F1:#父类、基类

  2.     def show(self):

  3.         print('show')

  4.  

  5. #F2继承F1

  6. class F2(F1):#子类、派生类

  7.     def bar(self):

  8.         print('bar')

  9.  

  10. obj = F2()

  11. obj.bar()

  12. obj.show()

  13. 输出:

  14. bar

  15. show

 

  1. class F1:#父类、基类

  2.     def show(self):

  3.         print('show')

  4.  

  5.     def foo(self):

  6.         print(self.name)

  7.  

  8. #F2继承F1

  9. class F2(F1):#子类、派生类

  10.     def __init__(self,name):

  1.         self.name = name

  2.  

  3.     def bar(self):

  4.         print('bar')

  5.  

  6.     def show(self):#投机的预先级越来越高

  1.         print('F2 show')

  2.  

  3. obj = F2('alex')

  4. obj.bar()

  5. obj.show()

  6. obj.foo()

  7. 输出:

  8. bar

  9. F2 show

  10. alex

 

  1. class S1:

  2.     def F1(self):

  3.         self.F2()

  4.  

  5.     def F2(self):

  6.         print('S1.F2()')

  7.  

  8. class S2(S1):

  9.     def F3(self):

  10.         self.F1()

  11.  

  12.     def F2(self):

  13.         print('S2.F2()')

  14.  

  15. obj = S2()

  16. obj.F3()

  17. 输出:

  18. S2.F2()

t = tarfile.open('/data/test/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz', 'r:gz')
print(t.getmembers())     # 查看压缩包内文件成员
t.extractall(path='/data/test/mysql')  # 解压全部
t.close()

如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/

继承

持续是三个类或八个类之间的父子关系,子进度继续父过程的装有国有实例变量和格局。世袭达成了代码的任用。重用已经存在的数量和行为,减弱代码的双重编写,python在类名后用一对圆括号表示继续关系,括号中的类表示父类,尽管父类定义了__init__办法,则子类必需出示地调用父类的__init__艺术,假诺子类供给扩充父类的一言一动,能够增添__init__办法的参数。

累Gavin书到已部分tar包中

shutil.copystat('f1.log','f2.log')

系统命令

 

本文由必威发布于必威-运维,转载请注明出处:configparser用于处理特定格式的文件必威:,其本

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。