您的位置:首页 > 编程语言 > Python开发

python常用模块与socket编程

2017-07-17 19:14 211 查看
######常用模块######


1. OS 模块


• 为访问操作系统的特定熟悉提供方法

• 提供了对平台模块的封装(对 windows, 对 mac 的封装等)

•os.environ      对环境变量的操作

• os.getcwd()   获取当前的工作目录

• os.access(path,mod)   判断对一个文件或者目录是否具有指定的权限

mode 参数的可选值: ROK, WOK, 和 X_OKOS 模块



•os.stat()          相当于 Linux 下 stat 命令

• os.listdir()    列出给定目录的内容



• os.mkdir(path)   创建目录

• os.mkdirs(path) 创建目录树,相当于mkdir -p 操作

• 使用 Python 执行 Linux 命令

  •os.system , 并没有返回值,是靠副作用产生输出的

  •os.popen 返回一个文件对象
  •os.popen2 返回两个文件对象,一个是 stdin, 一个是 stdout

  •os.popen3 返回三个文件对象 :stdin,stdout,stderros.path 模块





2. os.path

os 的一个子模块 , 主要是对路径进行解析、创建、测试和其他的一些操作,封装了不同平台的路径操作。



• 路径解析:

•path.split('/tmp/test/ab')

• path.basename('/tmp/test/ab')

• path.dirname('/tmp/test/ab')

• path.join('a','b','c')

• path.abspath('.')
• path.splitext('aaa.tar.gz')





文件属性相关:

• os.path.getatime ('filename')

• os.path.getctime ('filename')

• os.path.getmtime ('filename')
• os.path.getsize('filename')





文件测试相关:

• os.path.isabs

• os.path.isdir

• os.path.isfile
• os.path.islink

3.sys模块

sys 模块,主要提供了系统相关的配置和操作,封装了探测、改变解释器runtime 以及资源的交互。

• sys.version 得到解释器的版本信息

• sys.platform 得到当前运行平台sys模块

•sys.argv 获取传递给脚本的参数,参数解析类似于 bash 的方式,第一个参数代表脚本本身;
print sys.argv  #以列表方式返回传递给脚本的参数



• sys.stderr , sys.stdin , sys.stdout 这些都分别代表一个文件对象;
print >> sys.stderr, 'I am error'



练习:
找出用户给定目录下的所有以.log结尾的文件。





4.time模块

python中表示时间的三种方式:

1. 时间戳

time.time()

2. 格式化的时间字符串

3. 元组(共9个元素)

time.localtime()time模块

time.mktime(t) 将元组格式时间转化为时间戳
time.localtime() 将时间戳转化为元组格式时间



time.sleep(secs)

time.ctime([secs]) 将时间戳转化为字符串格式显示

time.strftime(format[,t]) 将元组格式时间转化为字符串显示

time.strptime(string[,format]) 将字符串显示转化为元组格式时间time模块

• time.strftime("%Y-%m-%d %X", time.localtime())

• time.strptime('2017-07-16 07:28:49','%Y-%m-%d %X')



5.date模块









6.shutil 模块

文件操作

• shutil模块简单来说是用来复制、归档文件和目录

• shutil.copyfile(src,dst) 复制一个文件





• shutil.copymod(src,dst) 复制文件权限 , 将文件权限同步到其他文件

• shutil.copy(src,dst) 源必须是文件,但是 dst 可以是文件或者目录,与cp 类似shutil 模块



• shutil.copy2(src,dst) 与 copy 类似,但是源数据也会复制,类似cp -p 命令,将权限 , 时间戳等源数据也复制过去。

• shutil.copytree(src,dst) 以copy2 的方式递归复制一个目录:







• shutil.rmtree(path) 递归删除一个目录

 打包压缩:

shutil.make_archive(base_name, format, root_dir=None,base_dir=None)

•basename: 打包后的文件名称,

•format: 以什么样的格式打包, rootdir 压缩的根目录。

•base_dir 开始压缩的目录。

•rootdir 和 basedir 默认都是当前目录

• 查看都支持哪些打包格式:

shutil.get_archive_formats()



进程管理

•psutil 是一个第三方模块,需要单独安装 : easy_install psutil

•/proc 目录中的主要文件的说明只简单列出几个经常用到监控中的文件

•/proc/cpuinfo CPU 信息

•/proc/loadavg 系统平均负载信息

•/proc/meminfo 内存相关信息,包括物理内存和交换分区

•/proc/swaps 交换分区使用情况







•案例

• 读取负载信息

• 监控 mariadb 进程是否存在

• 备份/home目录,备份的包名称为homeback_YY_MM_DD.tar.gz

7.diiferlib模块

文件差异对比

示例1:

import difflib

text1 = 'hello westos'

text2 = 'hello zhan'

text1_lines = text1.splitlines()

text2_lines = text2.splitlines()

# 创建diff对象

d = difflib.Differ()

# 采用compare方法对字符串进行比较

diff = d.compare(text1_lines, text2_lines)

# print list(diff)

print '\n'.join(list(diff))

'-' 包含在第一个中,但不包含在第二个中

'+' 包含在第二个中,但不包含在第一个中

' ' 两者相同

'?' 两个存在增量差异

'^' 标志出两者行存在的差异字符文件差异对比







示例2:

d = difflib.HtmlDiff()

print d.make_file(text1_lines, text2_lines)

在执行代码时,python xx.py > diff.html配置文件的差异对比

思考:

有两个配置文件,通过html页面显示两个配置文件之间的差异。

思路:

先读取两个文件的内容;比较文件内容的不同,和前面操作没区别。







#####socket编程######

socket编程

Socket 是网络编程的一个抽象概念。通常我们用一个 Socket 表示

“打开了一个网络链接”,而打开一个 Socket 需要知道目标计算机的 IP

地址和端口号,再指定协议类型即可。

客户端操作

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 建立连接:

s.connect(('127.0.0.1',8888))# 建立连接

print s.recv(1024)# 接收欢迎消息

s.send('hello server') # 发送数据

s.close()

print 'Waiting for connection...'

服务端操作

import time

import socket

s = socket.socket()

# 监听端口:

s.bind(('127.0.0.1', 8888))

s.listen(5)

print 'Waiting for connection...'

# 接受一个新连接:

sock, addr = s.accept()

print 'accept a connection...'

sock.send('welcome ,client')

data = sock.recv(1024)

print data

s.close()

print 'connection close.....'





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: