python常用模块与socket编程

######常用模块######

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.....'



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值