Python自动化运维之常用模块

一、configparser模块

1、配置文件格式如下:

# 用户信息
; 用户信息
[tom]
user=tom
passwd:123
age=18
is_admin=true
salary=31
[jack]
user=jack
passwd:123
age=18
is_admin=true
salary=31

总结:配置文件中使用"[]"来写下面的配置的标题,注释信息可以使用“#”和“;”来进行,赋值使用“key = value”或者“key:value”两种形式

2、读取配置文件:

"""
a.conf文件内容
# 用户信息
; 用户信息
[tom]
user=tom
passwd:123
age=18
is_admin=true
salary=31
[jack]
user=jack
passwd:123
age=18
is_admin=true
salary=31
"""
# 导入configparser模块
import configparser
# 生成config对象
config=configparser.ConfigParser()
# 用config对象读取配置文件
config.read(‘a.conf‘,encoding="utf-8")
#查看所有的标题
res=config.sections() # [‘tom‘, ‘jack‘]
print(res)
# 查看标题tom下所有key=value的key
options=config.options(‘tom‘)
print(options)  # [‘user‘, ‘passwd‘, ‘age‘, ‘is_admin‘, ‘salary‘]
#查看标题jack下所有key=value的(key,value)格式
item_list=config.items(‘jack‘)
print(item_list)   # [(‘user‘, ‘jack‘), (‘passwd‘, ‘123‘), (‘age‘, ‘18‘), (‘is_admin‘, ‘true‘), (‘salary‘, ‘31‘)]
#查看标题tom下user的值=>字符串格式
user=config.get(‘tom‘,‘user‘)
print(user)    # tom
#查看标题tom下age的值=>整数格式
age=config.getint(‘tom‘,‘age‘)
print(age)    # 18
#查看标题tom下is_admin的值=>布尔值格式
admin=config.getboolean(‘tom‘,‘is_admin‘)
print(admin)  # True
#查看标题tom下salary的值=>浮点型格式
salary=config.getfloat(‘tom‘,‘salary‘)
print(salary) # 31.0

3、修改配置文件

# 导入configparser模块
import configparser
# 生成config对象
config=configparser.ConfigParser()
# 用config对象读取配置文件
config.read(‘a.conf‘)
# 删除整个标题tom
config.remove_section("tom")
# 删除标题jack下的某个user和age
config.remove_option(‘jack‘,‘user‘)
config.remove_option(‘jack‘,‘age‘)
# 判断是否存在某个标题
print(config.has_section(‘tom‘))   # False
# 判断标题jack下是否有passwd
print(config.has_option("jack",‘passwd‘))  # True
# 添加一个标题tom
config.add_section(‘tom‘)
# 在标题egon下添加name=tom,age=18的配置
config.set("tom",‘name‘,‘tom‘) # 第一个tom为标题,name为key,第二个tom为value
config.set(‘tom‘,‘age‘,"18")   #必须是字符串,否则报错
# 最后将修改的内容写入文件,如果文件不存在则会创建文件,完成最终的修改
config.write(open(‘b.cfg‘,‘w‘))

=====深入了解============
好多软件的常见文档格式如下,文件名为test.ini:

[DEFAULT]
ServerAliveInterval = 45
Compression = yes
CompressionLevel = 9
ForwardX11 = yes
[bitbucket.org]
User = hg
[topsecret.server.com]
Port = 50022
ForwardX11 = no

php.ini文件的格式也是如此

[PHP]
engine = On
short_open_tag = Off
asp_tags = Off
precision = 14
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 17
disable_functions =
disable_classes =
zend.enable_gc = On
expose_php = On
max_execution_time = 30
max_input_time = 60
memory_limit = 128M
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
html_errors = On
variables_order = "GPCS"
request_order = "GP"
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 8M
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
doc_root =
user_dir =
enable_dl = Off
file_uploads = On
upload_max_filesize = 2M
max_file_uploads = 20
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60
[CLI Server]
cli_server.color = On
[Date]
[filter]
[iconv]
[intl]
[sqlite]
[sqlite3]
[Pcre]
[Pdo]
[Pdo_mysql]
pdo_mysql.cache_size = 2000
pdo_mysql.default_socket=
[Phar]
[mail function]
SMTP = localhost
smtp_port = 25
sendmail_path = /usr/sbin/sendmail -t -i
mail.add_x_header = On
[SQL]
sql.safe_mode = Off
[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1
[Interbase]
ibase.allow_persistent = 1
ibase.max_persistent = -1
ibase.max_links = -1
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
ibase.dateformat = "%Y-%m-%d"
ibase.timeformat = "%H:%M:%S"
[MySQL]
mysql.allow_local_infile = On
mysql.allow_persistent = On
mysql.cache_size = 2000
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off
[MySQLi]
mysqli.max_persistent = -1
mysqli.allow_persistent = On
mysqli.max_links = -1
mysqli.cache_size = 2000
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off
[mysqlnd]
mysqlnd.collect_statistics = On
mysqlnd.collect_memory_statistics = Off
[OCI8]
[PostgreSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0
[Sybase-CT]
sybct.allow_persistent = On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity = 10
sybct.min_client_severity = 10
[bcmath]
bcmath.scale = 0
[browscap]
[Session]
session.save_handler = files
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.bug_compat_42 = Off
session.bug_compat_warn = Off
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
[MSSQL]
mssql.allow_persistent = On
mssql.max_persistent = -1
mssql.max_links = -1
mssql.min_error_severity = 10
mssql.min_message_severity = 10
mssql.compatability_mode = Off
mssql.secure_connection = Off
[Assertion]
[mbstring]
[gd]
[exif]
[Tidy]
tidy.clean_output = Off
[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
soap.wsdl_cache_limit = 5
[sysvshm]
[ldap]
ldap.max_links = -1
[mcrypt]
[dba]

1. 获取所有节点

import configparser
config=configparser.ConfigParser()
config.read("php.ini",encoding="utf-8")
item_list=config.sections()
print(item_list)

‘‘‘

打印结果:
[‘bitbucket.org‘, ‘topsecret.server.com‘]

‘‘‘

2. 获取指定节点下所有的键值对

import configparser
config=configparser.ConfigParser()
config.read(‘test.ini‘,encoding=‘utf-8‘)
res=config.items(‘bitbucket.org‘)
print(res)

‘‘‘

打印结果:(包含DEFAULT以及bitbucket.org这俩标题下所有的items)
[(‘serveraliveinterval‘, ‘45‘), (‘compression‘, ‘yes‘), (‘compressionlevel‘, ‘9‘), (‘forwardx11‘, ‘yes‘), (‘user‘, ‘hg‘)]

‘‘‘

3. 获取指定节点下所有的建

import configparser
config=configparser.ConfigParser()
config.read("test.ini",encoding="utf-8")
key=config.options("bitbucket.org")
print(key)

‘‘‘

打印结果:(包含DEFAULT以及bitbucket.org这俩标题下所有的键)
[‘user‘, ‘serveraliveinterval‘, ‘compression‘, ‘compressionlevel‘, ‘forwardx11‘]

‘‘‘

4 获取指定节点下指定key的值

import configparser
config=configparser.ConfigParser()
config.read(‘test.ini‘,encoding=‘utf-8‘)
res1=config.get(‘bitbucket.org‘,‘user‘)
res2=config.getint(‘topsecret.server.com‘,‘port‘)
res3=config.getfloat(‘topsecret.server.com‘,‘port‘)
res4=config.getboolean(‘topsecret.server.com‘,‘ForwardX11‘)
print(res1)
print(res2)
print(res3)
print(res4)

‘‘‘

打印结果:
hg
50022
50022.0
False

‘‘‘

5. 检查、删除、添加节点

import configparser
config=configparser.ConfigParser()
config.read(‘test.ini‘,encoding=‘utf-8‘)
# 检查
has_sec=config.has_section(‘bitbucket.org‘)
print(has_sec) #打印True
# 添加节点
try:
    config.add_section(‘egon‘) # 已经存在则报错,使用异常处理解决此问题
except configparser.DuplicateSectionError:
    print("Section ‘egon‘ already exists")
config[‘egon‘][‘username‘]=‘egon‘
config[‘egon‘][‘age‘]=‘18‘
config.write(open(‘test.ini‘,‘w‘))
# 删除节点
config.remove_section(‘egon‘)
config.write(open(‘test.ini‘,‘w‘))

6. 检查、删除、设置指定组内的键值对

import configparser
config=configparser.ConfigParser()
config.read(‘test.ini‘,encoding=‘utf-8‘)
# 检查
has_sec=config.has_option(‘bitbucket.org‘,‘user‘) #bitbucket.org下有一个键user
print(has_sec) #打印True
# 删除
config.remove_option(‘DEFAULT‘,‘forwardx11‘)
config.write(open(‘test.ini‘,‘w‘))
# 设置
config.set(‘bitbucket.org‘,‘user‘,‘gangdang‘)
config.write(open(‘test.ini‘,‘w‘))

7. 使用字典数值类型创建example.ini配置文件

二、OS模块

os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
os.curdir  返回当前目录: (‘.‘)
os.pardir  获取当前目录的父目录字符串名:(‘..‘)
os.makedirs(‘dirname1/dirname2‘)    可生成多层递归目录
os.removedirs(‘dirname1‘)    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir(‘dirname‘)    生成单级目录;相当于shell中mkdir dirname
os.rmdir(‘dirname‘)    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir(‘dirname‘)    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()  删除一个文件
os.rename("oldname","newname")  重命名文件/目录
os.stat(‘path/filename‘)  获取文件/目录信息
os.sep    输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep    输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep    输出用于分割文件路径的字符串 win下为;,Linux下为:
os.name    输出字符串指示当前使用平台。win->‘nt‘; Linux->‘posix‘
os.system("bash command")  运行shell命令,直接显示
os.environ  获取系统环境变量
os.path.abspath(path)  返回path规范化的绝对路径
os.path.split(path)  将path分割成目录和文件名二元组返回
os.path.dirname(path)  返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path)  返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path)  如果path是绝对路径,返回True
os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path)  返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path的大小

三、sys模块

sys.argv           命令行参数List,第一个元素是程序本身路径
sys.exit(n)        退出程序,正常退出时exit(0)
sys.version        获取Python解释程序的版本信息
sys.maxint         最大的Int值
sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform       返回操作系统平台名称
时间: 2024-09-29 00:02:21

Python自动化运维之常用模块的相关文章

Python自动化运维之常用模块—logging

在现实生活中,记录日志非常重要.银行转账时会有转账记录:如果有出现什么问题,人们可以通过日志数据来搞清楚到底发生了什么.    对于系统开发.调试以及运行,记录日志都是同样的重要.如果没有日志记录,程序崩溃时你几乎就没办法弄明白到底发生了什么事情.1.简单使用 import logging logging.debug('debug message') logging.info('info message') logging.warn('warn message') logging.error('

Python自动化运维之常用模块-re

1.简介 正则表达式本身是一种小型的.高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配.正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行. 2.正则表达式中常用的字符含义2.1 普通字符和11个元字符: 这里需要强调一下反斜杠\的作用: 反斜杠后边跟元字符去除特殊功能:(即将特殊字符转义成普通字符) 反斜杠后边跟普通字符实现特殊功能:(即预定义字符) 引用序号对应的字组所匹配的字符串. >>> import re >

Python自动化运维——DNS处理模块

Infi-chu: http://www.cnblogs.com/Infi-chu/ 模块:dnspython 功能: 支持所有的记录类型 可以用于查询.传输并动态更新ZONE信息 支持TSIG(事务签名)验证消息和EDNS0(扩展DNS) 安装: wget http://www.dnspython.org/kits/1.9.4/dnspython-1.9.4.tar.gz tar -zxvf dnspython-1.9.4.tar.gz cd dnspython-1.9.4 python se

Python自动化运维——系统进程管理模块

模块:psutil psutil是一个跨平台库,可以很轻松的为我们实现获取系统运行的进程和资源利用率等信息. 功能:主要是为了系统监控 安装: wget https://pypi.python.org/packages/source/p/psutil/psutil-2.0.0.tar.gz --no-check-certificate tar -zxvf psutil-2.0.0.tar.gz cd psutil-2.0.0 python setup.py install 进程信息: 进行信息主

电子书 Python自动化运维:技术与最佳实践.pdf

本书在中国运维领域将有"划时代"的重要意义:一方面,这是国内一本从纵.深和实践角度探讨Python在运维领域应用的著作:一方面本书的作者是中国运维领域的"偶像级"人物,本书是他在天涯社区和腾讯近10年工作经验的结晶.因为作者实战经验丰富,所以能高屋建瓴.直指痛处,围绕Python自动化运维这个主题,不仅详细介绍了系统基础信息.服务监控.数据报表.系统安全等基础模块,而且深入讲解了自动化操作.系统管理.配置管理.集群管理及大数据应用等高级功能.重要的是,完整重现了4个

Python自动化运维课程学习--Day2

本文为参加老男孩Python自动化运维课程第二天学习内容的总结. 大致内容如下: 1.python模块初识 2.python程序运行流程 3.python数据类型(只讲了numbers, bool, strings, bytes, list, tuple, dict, set) 4.python数据运算 0.关于本文中所有运行Python代码的环境: --操作系统:Ubuntu 16.10 (Linux 4.8.0) --Python版本:3.5.2 --Python IDE: PyCharm

python自动化运维之集中病毒扫描

1.因为我linux的python是2.6.6,所以因为有些模块是2.7的,先进行升级. 步骤地址:http://www.linuxidc.com/Linux/2014-07/104555.htm 2.安装pyclamd yum install -y clamav clamd clamav-update 安装clamavp的相关程序包 chkconfig --level 235 clamd on /usr/bin/freshclam pyClamd-0.3.15.tar.gz安装包安装 3.vi

(转)Python自动化运维之13、异常处理及反射(__import__,getattr,hasattr,setattr)

Python自动化运维之13.异常处理及反射(__import__,getattr,hasattr,setattr) 一.异常处理 python异常: python的运行时错误称作异常 (1)语法错误:软件的结构上有错误而导致不能被解释器解释或不能被编译器编译 (2)逻辑错误:由于不完整或不合法的输入所致,也可能是逻辑无法生成.计算或者输出结果需要的过程无法执行等 python异常是一个对象,表示错误或意外情况 (1)在python检测到一个错误时,将触发一个异常 python可以通常异常传导机

Python自动化运维Django入门

随着IT运维技术日益更新,近几年运维自动化越来越火,而且学习python的人非常的火爆,尤其是python自动化运维开发,得到了很多前辈的推崇,尤其是老男孩培训中心.老男孩老师.Alex老师等,在这里非常感谢你们. 这里我也记录一下以前学习Django的一点点心得和方法,方便以后自己查阅,如果能帮助初学者是最好的了!好的,其他不多说了,博文滴走起. 一.系统实战环境 系统版本:CnetOS6.5 x86_64 Django版本:Django-1.5.8 MySQL版本:MySQL-5.1.73