python 之路7 初学面向对象 以及 文件配置模块

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将内容写入配置文件。

3.基本例子

test.conf

[sec_a]

a_key1 = 20

a_key2 = 10

[sec_b]

b_key1 = 121

b_key2 = b_value2

b_key3 = $r

b_key4 = 127.0.0.1

parse_test_conf.py

import ConfigParser

cf = ConfigParser.ConfigParser()

#read config

cf.read("test.conf")

# return all section

secs = cf.sections()

print ‘sections:‘, secs

opts = cf.options("sec_a")

print ‘options:‘, opts

kvs = cf.items("sec_a")

print ‘sec_a:‘, kvs

#read by type

str_val = cf.get("sec_a", "a_key1")

int_val = cf.getint("sec_a", "a_key2")

print "value for sec_a‘s a_key1:", str_val

print "value for sec_a‘s a_key2:", int_val

#write config

#update value

cf.set("sec_b", "b_key3", "new-$r")

#set a new value

cf.set("sec_b", "b_newkey", "new-value")

#create a new section

cf.add_section(‘a_new_section‘)

cf.set(‘a_new_section‘, ‘new_key‘, ‘new_value‘)

#write back to configure file

cf.write(open("test.conf", "w"))

得到终端输出:

sections: [‘sec_b‘, ‘sec_a‘]

options: [‘a_key1‘, ‘a_key2‘]

sec_a: [(‘a_key1‘, "i‘m value"), (‘a_key2‘, ‘22‘)]

value for sec_a‘s a_key1: i‘m value

value for sec_a‘s a_key2: 22

更新后的test.conf

[sec_b]

b_newkey = new-value

b_key4 = 127.0.0.1

b_key1 = 121

b_key2 = b_value2

b_key3 = new-$r

[sec_a]

a_key1 = i‘m value

a_key2 = 22

[a_new_section]

new_key = new_value

1、python 函数式+面向对象

2、函数式编程,面向对象编程实现:发送邮件的功能

# 函数

def mail(email, message):

print("去发吧")

return True

mail("[email protected]", "好人")

面向对象:类,对象

class Foo:

# 方法

def mail(self, email, message):

print(‘去发吧‘)

return True

# 调用

1、创建对象,类名()

obj = Foo()

2、通过对象去执行方法

obj.mail("[email protected]", "好人")

3、类和对象

a. 创建类

class 类名:

def 方法名(self,xxxx):

pass

b. 创建对象

对象 = 类名()

c. 通过对象执行方法

对象.方法名(123)

4、

函数式:

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

pass

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

pass

def remove(host, username, password, nid):

pass

def modify(host, username, password, name):

pass

...

fetch(....)

面向对象

class SQLHelper:

def fetch(self, sql):

pass

def create(self, sql):

pass

def remove(self, nid):

pass

def modify(self, name):

pass

obj1 = SQLHelper()

obj1.hhost = "c1.salt.com"

obj1.uuserane = "alex"

obj1.pwd = "123"

obj1.fetch("select * from A")

obj2 = SQLHelper()

obj2.hhost = "c2.salt.com"

obj2.uuserane = "alex"

obj2.pwd = "123"

obj2.fetch("select * from A")

========> 什么时候用面向对象?当某一些函数具有相同参数时,可以使用面向对象的方式,将参数值一次性的封装到对象,以后去对象中取值即可

5、self是什么鬼?

self是一个python自动会给传值的参数

那个对象执行方法,self就是谁。

obj1.fetch(‘selec...‘)  self=obj1

obj2.fetch(‘selec...‘)  self=obj2

6、构造方法

类中有一个特殊的方法 __init__,类()自动被执行

7、面向对象

三大特性:封装、继承、多态

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将内容写入配置文件。

3.基本例子

test.conf


1

2

3

4

5

6

7

8

9

[sec_a] 

a_key1 = 20 

a_key2 = 10 

  

[sec_b] 

b_key1 = 121 

b_key2 = b_value2 

b_key3 = $r 

b_key4 = 127.0.0.1

parse_test_conf.py


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

import ConfigParser 

cf = ConfigParser.ConfigParser() 

#read config 

cf.read("test.conf"

# return all section 

secs = cf.sections() 

print ‘sections:‘, secs 

  

opts = cf.options("sec_a"

print ‘options:‘, opts 

  

kvs = cf.items("sec_a"

print ‘sec_a:‘, kvs 

  

#read by type 

str_val = cf.get("sec_a""a_key1"

int_val = cf.getint("sec_a""a_key2"

  

print "value for sec_a‘s a_key1:", str_val 

print "value for sec_a‘s a_key2:", int_val 

  

#write config 

#update value 

cf.set("sec_b""b_key3""new-$r"

#set a new value 

cf.set("sec_b""b_newkey""new-value"

#create a new section 

cf.add_section(‘a_new_section‘

cf.set(‘a_new_section‘‘new_key‘‘new_value‘

  

#write back to configure file 

cf.write(open("test.conf""w"))

得到终端输出:


1

2

3

4

5

sections: [‘sec_b‘‘sec_a‘

options: [‘a_key1‘‘a_key2‘

sec_a: [(‘a_key1‘"i‘m value"), (‘a_key2‘, ‘22‘)] 

value for sec_a‘s a_key1: i‘m value 

value for sec_a‘s a_key2: 22

更新后的test.conf


1

2

3

4

5

6

7

8

9

10

11

12

13

[sec_b] 

b_newkey = new-value 

b_key4 = 127.0.0.1 

b_key1 = 121 

b_key2 = b_value2 

b_key3 = new-$r 

  

[sec_a] 

a_key1 = i‘m value 

a_key2 = 22 

  

[a_new_section] 

new_key = new_value

4.Python的ConfigParser Module中定义了3个类对INI文件进行操作。分别是RawConfigParser、ConfigParser、SafeConfigParser。RawCnfigParser是最基础的INI文件读取类,ConfigParser、SafeConfigParser支持对%(value)s变量的解析。

设定配置文件test2.conf


1

2

3

4

[portal] 

url = http://%(host)s:%(port)s/Portal

host = localhost 

port = 8080

使用RawConfigParser:


1

2

3

4

5

6

7

8

9

10

11

import ConfigParser 

 

cf = ConfigParser.RawConfigParser() 

 

print "use RawConfigParser() read"

cf.read("test2.conf"

print cf.get("portal""url"

 

print "use RawConfigParser() write"

cf.set("portal""url2""%(host)s:%(port)s"

print cf.get("portal""url2")

得到终端输出:


1

2

3

4

use RawConfigParser() read

http://%(host)s:%(port)s/Portal

use RawConfigParser() write 

%(host)s:%(port)s

改用ConfigParser:


1

2

3

4

5

6

7

8

9

10

11

import ConfigParser 

 

cf = ConfigParser.ConfigParser() 

 

print "use ConfigParser() read"

cf.read("test2.conf"

print cf.get("portal""url"

 

print "use ConfigParser() write"

cf.set("portal""url2""%(host)s:%(port)s"

print cf.get("portal""url2")

得到终端输出:


1

2

3

4

use ConfigParser() read

http://localhost:8080/Portal

use ConfigParser() write 

localhost:8080

改用SafeConfigParser:


1

2

3

4

5

6

7

8

9

10

11

import ConfigParser 

 

cf = ConfigParser.SafeConfigParser() 

 

print "use SafeConfigParser() read"

cf.read("test2.conf"

print cf.get("portal""url"

 

print "use SateConfigParser() write"

cf.set("portal""url2""%(host)s:%(port)s"

print cf.get("portal""url2")

得到终端输出(效果同ConfigParser):


1

2

3

4

use SafeConfigParser() read

http://localhost:8080/Portal

use SateConfigParser() write 

localhost:8080

时间: 2024-10-23 20:14:32

python 之路7 初学面向对象 以及 文件配置模块的相关文章

Python之路【第四篇】:模块

什么是模块: 模块就是一个功能的集合. 模块就和乐高积木差不多,你用这些模块组合出一个模型,然后也可以用这个模块加上其他的模块组合成一个新的模型 模块的种类: 1.内置模块(python自带的比如os.file等模块) 2.自定义模块,自己写的模块 3.第三方模块 模块的导入: import module from module.xx.xx import xx from module.xx.xx import xx as rename from module.xx.xx import * 内置模

Python之路,Day8 - 面向对象编程进阶

本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个支持多用户在线的FTP程序 面向对象高级语法部分 经典类vs新式类 把下面代码用python2 和python3都执行一下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #_*_coding:utf-8_*_ class A:     def __init__(self):

【python之路34】面向对象作业之学生选课系统

一.需求: 1.可以注册管理员账号,管理员账号可以创建老师和课程 2.学生可以注册和登陆,学生可以从课程列表选课,可以进行上课登记查看 二.代码 1.文件目录 bin 存放可执行文件 config 存放可配置文件 db 存放数据文件 lib 存放实现类 目录结构如图: 2.admin.py 中的代码 #!usr/bin/env python # -*- coding:utf-8 -*- """admin注册登录,以及用admin账号创建老师和课程""&qu

Python之路,Day7 - 面向对象编程进阶

本节内容 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业开发一个支持多用户在线的FTP程序 面向对象高级语法部分 静态方法 通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法什么是静态方法呢其实不难理解普通的方法可以在实例化后直接调用并且在方法里可以通过self.调用实例变量或类变量但静态方法是不可以访问实例变量或类变量的一个不能访问实例变量和类变量的方法其实相当于跟类本身已经没什么关系了它与类唯一的关联就是需要通过

Python之路 day2 按行读文件

1 #1. 最基本的读文件方法: 2 3 # File: readline-example-1.py 4 5 file = open("sample.txt") 6 7 while 1: 8 line = file.readline() 9 if not line: 10 break 11 pass # do something 12 #一行一行得从文件读数据,显然比较慢:不过很省内存. 13 14 #在我的机器上读10M的sample.txt文件,每秒大约读32000行 15 16

小白的python之路10/31&11/1文件操作系统

文件操作系统的介绍 ext4的superblock块是超级快,innode 块是专门存放文件信息的, block count将硬盘做成block块,对操作系统而言写在block块上就可了,eg:文件10g,分成n个block块,之后对应扇区,扇区对应磁 下图的innode一层 ls -l /etc/passwd #查看文件权限 ll -i /etc/passwd #查看文件的innode号,相当于我们的身份证 df -i 查看innode号 补充磁盘满分为两种情况,一种是空间满一中是文件数目达到

python之路---16 初识面向对象

三十五.初识面向对象 一 .面向对象和面向过程比较 ①面向过程:一切以事物的发展流程为核心    优点:负责的问题流程化,编写相对简单 缺点:可扩展性差 ②面向对象:一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 优点:可扩展性强 缺点:编程的复杂度高于面向过程 二.类和对象 ①类:就是图纸,创建对象的第一步     对象:通过类造出来的具体事物, ②基本格式 class  类名:            #创建类    类名用驼峰格式 def __init__(self,参数): 

Python之路【目录】

目录 Python之路[第一篇]:Python简介和入门 Python之路[第二篇]:Python基础(一) Python之路[第三篇]:Python基础(二) Python之路[第四篇]:模块 Python之路[第五篇]:面向对象及相关 Python之路[第六篇]:Socket Python之路[第七篇]:线程.进程和协程 Python之路[第八篇]:堡垒机实例以及数据库操作 Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy P

Python之路目录

目录 Python之路[第一篇]:  Python简介及入门 Python之路[第二篇]:  Python基础一 Python之路[第三篇]:  Python基础二 Python之路[第四篇]:  模块 Python之路[第五篇]:  Python面向对象(一) Python之路[第六篇]:  Python面向对象(二) Python之路[第七篇]:  socket编程 Python之路[第八篇]:  进程.线程.协程 Python之路[第九篇]:  HTML Python之路[第十篇]:  C