例若有个简单的文件,如上咱们能够对这个相应格式的文件进行一些操做
一、获取全部节点 sections
1
2
3
4
5
6
|
import
configparser
xx
=
configparser.ConfigParser()
# 建立一个对象
xx.read(
"ini"
,encoding
=
"utf8"
)
# 读取相应文件
result
=
xx.sections()
# 获取全部节点
print
(result)
|
二、获取指定节点下全部的键 options
1
2
3
4
5
6
7
|
import
configparser
xx
=
configparser.ConfigParser()
# 建立一个对象
# xx的对象的read功能,打开读取文件,放进内容
xx.read(
"ini"
,encoding
=
"utf8"
)
# 读取相应文件
result
=
xx.options(
"kaixin"
)
# 获取指定节点下全部的键
print
(result)
|
三、获取指定节点下全部的键值对 items
1
2
3
4
5
6
7
|
import
configparser
xx
=
configparser.ConfigParser()
# 建立一个对象
# xx的对象的read功能,打开读取文件,放进内容
xx.read(
"ini"
,encoding
=
"utf8"
)
# 读取相应文件
result
=
xx.items(
"kaixin"
)
# 获取指定节点下的全部键值对
print
(result)
|
四、获取指定节点下指定key的值
1
2
|
result
=
xx.get(
"kaixin"
,
"age"
)
print
(result)
|
五、检查,添加,删除节点
1
2
3
4
5
6
7
8
9
10
11
|
# 检查节点是否存在,返回的是布尔值
has_sec
=
xx.has_section(
"kaixin"
)
print
(has_sec)
# 添加节点
xx.add_section(
"Tom"
)
xx.write(
open
(
"ini"
,
"w"
))
# 删除节点
xx.remove_section(
"Tom"
)
xx.write(
open
(
"ini"
,
"w"
))
|
六、检查、删除、设置指定组内的键值对
1
2
3
4
5
6
7
8
9
10
11
|
# 检查节点下的key值是否存在,返回的是布尔值
has_opt
=
xx.has_option(
"kaixin"
,
"age"
)
print
(has_opt)
# 删除键值对
xx.remove_option(
"kaixin"
,
"money"
)
xx.write(
open
(
"ini"
,
"w"
))
# 设置键值对
xx.
set
(
"tony"
,
"money"
,
"10000"
)
xx.write(
open
(
"ini"
,
"w"
))
|
hashlib
用于加密相关的操做,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法
1
2
3
4
5
|
import
hashlib
hash
=
hashlib.md5(bytes(
"bingdu"
,encoding
=
"utf8"
))
# 建立md5对象,并额外加密
hash
.update(bytes(
"123"
,encoding
=
"utf8"
))
# 对字符串加密
print
(
hash
.hexdigest())
# 取到密文
|
subprocess
能够执行shell命令的相关模块和函数有
- os.system
- os.spawn*
- os.popen* —废弃
- popen2.* —废弃
- commands.* —废弃,3.x中被移除
以上执行shell命令的相关的模块和函数的功能均在 subprocess 模块中实现,并提供了更丰富的功能。
subprocess.Popen(...)
用于执行复杂的系统命令
参数:
- args:shell命令,能够是字符串或者序列类型(如:list,元组)
- bufsize:指定缓冲。0 无缓冲,1 行缓冲,其余 缓冲区大小,负值 系统缓冲
- stdin, stdout, stderr:分别表示程序的标准输入、输出、错误句柄
- preexec_fn:只在Unix平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行以前被调用
- close_sfs:在windows平台下,若是close_fds被设置为True,则新建立的子进程将不会继承父进程的输入、输出、错误管道。
- 因此不能将close_fds设置为True同时重定向子进程的标准输入、输出与错误(stdin, stdout, stderr)。
- shell:同上
- cwd:用于设置子进程的当前目录
- env:用于指定子进程的环境变量。若是env = None,子进程的环境变量将从父进程中继承。
- universal_newlines:不一样系统的换行符不一样,True -> 赞成使用 \n
- startupinfo与createionflags只在windows下有效
- 将被传递给底层的CreateProcess()函数,用于设置子进程的一些属性,如:主窗口的外观,进程的优先级等等
- shell=True: 指定的命令行会经过shell来执行
- stdin : 标准输入
- stdout : 标准输出
- stderr : 标准错误的文件句柄
- PIPE : 管道 ,默认值 为: None, 表示不作重定向,管道能够用来接收数据。

把标准输出放入管道中,屏幕上就不会输出内容。 res=subprocess.Popen("dir", shell=True,stdout=subprocess.PIPE,stdin=subprocess.PIPE,stderr=subprocess.PIPE) #执行dir命令,交给shell解释器执行,经过标准类型和subprocess.PIPE放入管道中。 >>> res.stdout.read() #读取管道里面的数据,在程序中,读取也不会输出到屏幕上。 >>> res.stdout.read() #再read一次,内容就为空,说明读取完成. b'' #显示为:bytes类型
optparse
Python 有两个内建的模块用于处理命令行参数:
一个是 getopt,《Deep in python》一书中也有提到,只能简单处理 命令行参数;
另外一个是 optparse,它功能强大,并且易于使用,能够方便地生成标准的、符合Unix/Posix 规范的命令行说明。
简单流程
首先必须导入模块optparse(这个很少说)

import optparse # 建立OptionParser类对象 parser = optparse.OptionParser() # 而后,使用add_option来定义命令行参数(伪代码) # parser.add_option(opt_str, ... # attr= value,...) # 每一个命令行参数就是由参数名字符串和参数属性组成的。如 -f 或者 –file 分别是长短参数名: parser.add_option("-f","--file",dest = "filename") # 最后,一旦你已经定义好了全部的命令行参数,调用 parse_args() 来解析程序的命令行: options,args = parser.parse_args() 注: 你也能够传递一个命令行参数列表到 parse_args();不然,默认使用 sys.argv[:1]。 parse_args() 返回的两个值: options,它是一个对象(optpars.Values),保存有命令行参数值。只要知道命令行参数名,如 file,就能够访问其对应的值: options.file 。 args,它是一个由 positional arguments 组成的列表。
struct
学习到socket网络编程这里,对struct有了认识,如今对它进行一些阐释,也能够较为有效的解决粘包问题
struct模块做用:解决bytes和其余二进制数据类型的转换
示例用法:
struct.pack('i',12)
参数说明:
pack函数做用:把任意数据类型变成bytes
i 表示4字节无符号整数。
import struct struct.pack('i',12) # 用方法pack进行打包,把后面的整形数据,封装成一个bytes类型 b'\x0c\x00\x00\x00' # 长度就是4 l=struct.pack('i',12313123) len(l) 4 #长度就是4
uppack
# 反解 struct.unpack('i',l) (12313123,) # 查看类型 l=struct.pack('i',1) type(l) <class 'bytes'> # bytes类型