configparser模块与 subprcess

利用configparser模块配置一个类似于 windows.ini格式的文件可以包含一个或多个节(section),每个节可以有多个参数(键=值)。

配置成这样一个文件

[DEFAULT]
ServerAliveInterval = 45
Compression = yes
CompressionLevel = 9
ForwardX11 = yes

[bitbucket.org]
User = hg

[topsecret.server.com]
Port = 50022
ForwardX11 = no

用Python中的confiparser模块

import configparser
# cfp=configparser.ConfigParser() # {}
# cfp["DEFAULT"]={"ServerAliveInterval":45,"Compression":"YES","CompressionLevel":9,"ForwardX11":"YES"}
# cfp["bitbucket.org"]={"USER":"hg"}
# cfp["topsecret.server.com"]={"Port ":5000123,"ForwardX11 ":"no"}
# with open("cfp.ini","w") as f:
# cfp.write(f)

读的操作:

import configparser

cfp=configparser.ConfigParser()

cfp.read("cfp.ini")

################################################

# print(cfp.sections()) # 查相应字段的操作
# print("topsecret.server.coms" in cfp)

for key in config['bitbucket.org']: # 注意,有default会默认default的键

print(key)

print(config.options('bitbucket.org')) # 同for循环,找到'bitbucket.org'下所有键

print(config.items('bitbucket.org')) #找到'bitbucket.org'下所有键值对

print(config.get('bitbucket.org','compression')) # yes get方法取深层嵌套的值

当我们需要调用系统的命令的时候,最先考虑的os模块。用os.system()和os.popen()来进行操作。但是这两个命令过于简单,不能完成一些复杂的操作,如给运行的命令提供输入或者读取命令的输出,判断该命令的运行状态,管理多个命令的并行等等。这时subprocess中的Popen命令就能有效的完成我们需要的操作。

import subprocess

s=subprocess.Popen("dir",shell=True,stdout=subprocess.PIPE)#在windos下必须得配置shell=True

print(s.stdout.read().decode("gbk"))

在linux下:

import subprocess

subprocess.Popen('ls -l',shell=True)

subprocess.Popen(['ls','-l'])
05-11 15:51