Python的模块及详解(1)

栏目: Python · 发布时间: 7年前

内容简介:Python的模块及详解(1)

psuitil模块

filecmp模块

一、系统性能信息模块psuitil

psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要应用于系统监控,分析和限制系统资源及进程的管理。它实现了同等命令行 工具 提供的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。

1.安装:

#wget https://pypi.python.org/packages/source/p/psutil/psutil-2.0.0.tar.gz --no-check-certificate 
# tar -xzvf psutil-2.0.0.tar.gz 
# cd psutil-2.0.0 
# python setup.py install

2.获取系统性能信息

CPU信息:

>>> import psutil

>>> psutil.cpu_times()#使用cpu_times方法获取CPU完整信息,需要显示所有逻辑CPU信息,

>>> #指定方法变量percpu=True即可,如psutil.cpu_times(percpu=True) 

scputimesuser=38.039999999999999 nice=0.01 system=110.88 idle=177062.59 iowait=53.399999999999999 irq=2.9100000000000001 softirq=79.579999999999998 steal=0.0 guest=0.0 

>>> psutil.cpu_times().user #获取单项数据信息,如用户user的CPU时间比 38.0 

>>> psutil.cpu_count() #获取CPU的逻辑个数,默认logical=True4 

>>> psutil.cpu_countlogical=False #获取CPU的物理个数 2

内存信息:

psutil.virtual_memory()   #获取内存完整信息

psutil.virtual_memory().total   #获取内存总数

psutil.virtual_memory().free    #获取空闲内存数

psutil.swap_memory()      #获取SWAP分区信息

磁盘信息:

磁盘IO信息包括read_count(读IO数)、write_count(写IO数)、read_bytes(IO读字节数)、write_bytes(IO写字节数)、read_time(磁盘读时间)、write_time(磁盘写时间)等

psutil.disk_partitions()    #获取磁盘完整信息

psutil.disk_usage('/')     #获取分区的使用情况

psutil.disk_io_counters()   #获取硬盘的IO个数、读写信息

psutil.disk_io_counters(perdisk=True)    #获取单个分区IO个数、读写信息

网络信息:

系统的网络信息与磁盘IO类似,涉及几个关键点,包括bytes_sent(发送字节数)、bytes_recv=28220119(接收字节数)、packets_sent=200978(发送数据包数)、packets_recv=212672(接收数据包数)等。

psutil.net_io_counters()         #获取网络总的IO信息,默认pernic=False

psutil.net_io_counters(pernic=True)     #输出每个网络接口的IO信息

其他信息:

psutil.users()            #返回当前登陆系统的用户信息

psutil.boot_time()            #获取开机时间,以 Linux 时间格式显示

datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")         

2018-01-15 15:24:26                             #转换成自然时间格式

3.系统进程管理方法

进程信息:

psutil.pids()        #列出所有进程的PID

p=psutil.Process(#)      #实例化一个对象,参数为一进程的PID

p.name()                 #进程名称

p.exe()         #进程bin路径

p.status()        #进程状态

p.cwd()            #进程工作目录绝对路径

p.create_time()        #创建时间,时间戳格式

p.uids()          #进程uid信息

p.gids()           #进程gid信息

p.cpu_time()            #进程CPU时间信息

p.cpu_affinity()       #进程CPU亲和度

p.memory_percent()      #进程内存利用率

p.memory_info()       #进程内存rss,vms信息

p.io_counters()             #进程IO信息

p.connections()         #打开进程Socket的namedutples列表

p.num_threads()     #进程打开的线程数

popen类使用

popen类的作用是获取用户启动的应用程序进程信息,以便跟踪进程的运行状态

import psutil

from subprocess import PIPE

p = psutil.Popen(["/usr/bin/python","-c","print('hello')"],stdout=PIPE)

p.name()

p.communicate()

p.cpu_times()     #进程运行的CPU时间

参见:

https://github.com/giampaolo/psutil

http://psutil.readthedocs.org/en/latest/

二、文件与目录差异对比方法—–filecmp模块

单文件对比

采用filecmp.cmp(f1,f2[,shallow])方法,比较文件名名为f1和f2的文件,相同返回True,不相同返回False,shallow默认为True,意思是只根据os.stat()方法返回的文件基本信息进行对比,比如最后访问时间、修改时间、状态改变时间等,会忽略文件内容的对比。当shallow为False时,则os.stat()与文件内容同时进行校验。

示例:比较单文件的差异。

>>> filecmp.cmp"/home/test/filecmp/f1""/home/test/filecmp/f3" 
True

>>> filecmp.cmp"/home/test/filecmp/f1""/home/test/filecmp/f2" 
False

多文件对比

采用filecmp.cmpfiles(dir1,dir2,common[,shallow])方法,对比dir1与dir2目录给定的文件清单。该方法返回文件名的三个列表,分别为匹配、不匹配、错误。匹配为包含匹配的文件的列表,不匹配反之,错误列表包括了目录不存在文件、不具备读权限或其他原因导致的不能比较的文件清单。

示例:dir1与dir2目录中指定文件清单对比。

>>>filecmp.cmpfiles"/home/test/filecmp/dir1""/home/test/filecmp/dir2",['f1''f2''f3''f4''f5']) 

(['f1' 'f2'], ['f3'], ['f4' 'f5'])

目录对比

通过dircmp(a,b[,ignore[,hide]])类创建一个目录比较对象,其中a和b是参加比较的目录名。ignore代表文件名忽略的列表,并默认为[‘RCS’,’CVS’,’tags’];hide代表隐藏的列表,默认为[os.curdir,os.pardir]。dircmp类可以获得目录比较的详细信息,如只有在a目录中包括的文件、a与b都存在的子目录、匹配的文件等,同时支持递归。

dircmp提供了三个输出报告的方法:

·report(),比较当前指定目录中的内容;

·report_partial_closure(),比较当前指定目录及第一级子目录中的内容;

·report_full_closure(),递归比较所有指定目录的内容。

为输出更加详细的比较结果,dircmp类还提供了以下属性:

·left,左目录,如类定义中的a

·right,右目录,如类定义中的b

·left_list,左目录中的文件及目录列表;

·right_list,右目录中的文件及目录列表;

·common,两边目录共同存在的文件或目录;

·left_only,只在左目录中的文件或目录;

·right_only,只在右目录中的文件或目录;

·common_dirs,两边目录都存在的子目录;

·common_files,两边目录都存在的子文件;

·common_funny,两边目录都存在的子目录(不同os.stat()记录的错误);

·same_files,匹配相同的文件;

·diff_files,不匹配的文件;

·funny_files,两边目录中都存在,但无法比较的文件;

·subdirs,将common_dirs目录名映射到新的dircmp对象,格式为字典类型。
示例:对比dir1dir2的目录差异。通过调用dircmp()方法实现目录差异对比功能,同时输出目录对比对象所有属性信息。
/home/test/filecmp/simple1.py
import filecmp 

 a="/home/test/filecmp/dir1" #定义左目录

 b="/home/test/filecmp/dir2" #定义右目录 

  dirobj=filecmp.dircmpab,['test.py']) #目录比较,忽略test.py文件 

 dirobj.report() 

 dirobj.report_partial_closure() 

 dirobj.report_full_closure() 

 print "left_list:"+ strdirobj.left_list

 print "right_list:"+ strdirobj.right_list

 print "common:"+ strdirobj.common

 print "left_only:"+ strdirobj.left_only 

 print "right_only:"+ strdirobj.right_only

 print "common_dirs:"+ strdirobj.common_dirs

 print "common_files:"+ strdirobj.common_files

 print "common_funny:"+ strdirobj.common_funny

 print "same_file:"+ strdirobj.same_files

 print "diff_files:"+ strdirobj.diff_files 

 print "funny_files:"+ strdirobj.funny_files

原创文章,作者:nene,如若转载,请注明出处:http://www.178linux.com/91122


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

实用Common Lisp编程

实用Common Lisp编程

Peter Seibel / 田春 / 人民邮电出版社 / 2011-10 / 89.00元

由塞贝尔编著的《实用Common Lisp编程》是一本不同寻常的Common Lisp入门书。《实用Common Lisp编程》首先从作者的学习经过及语言历史出发,随后用21个章节讲述了各种基础知识,主要包括:REPL及Common Lisp的各种实现、S-表达式、函数与变量、标准宏与自定义宏、数字与字符以及字符串、集合与向量、列表处理、文件与文件I/O处理、类、FORMAT格式、符号与包,等等。......一起来看看 《实用Common Lisp编程》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具