python3 OS模块和SYS模块
0x00 快速入门
(1)内置模块一览表 描述:模块是一个包含所有您定义的函数和变量的文件其后缀名为.py,模块可以被失败引入的以使用该模块中的函数等功能。
#>>>dir(random) #查看与使用模块里的函数,前提必须引入模块,高阶用法 import 引入模块 as 模块别名;
#>>>help(random) #模块帮助
import os #操作系统模块
import sys #系统模块
import math #数学计算模块
import random #随机数生成模块
import pickle #数据序列和反序列化模块
import time #时间解析模块提供各种时间相关的功能 (time,datetime 以及 calendar)
import dlifflib #文件对比模块 (Python自动化运维处详解)
import filecmp #文件目录差异对比方法 (同时)
import pprint #格式化美观输出
import requests #Requests 发送网络请求非常简单
import smtplib #邮件发信模块
import email #邮件模板包
import uuid #UUID模块
0x01 模块详细
os模块
描述:os模块关于文件/目录常用的函数使用方法:
getcwd() 返回当前工作目录
chdir(path) 改变工作目录
listdir(path=’.’) 列举指定目录中的文件名(’.’表示当前目录,’..’表示上一级目录)
mkdir(path) 创建单层目录,如该目录已存在抛出异常
makedirs(path) 递归创建多层目录,如该目录已存在抛出异常,注意:’E:\a\b’和’E:\a\c’并不会冲突
remove(path) 删除文件 rmdir(path) 删除单层目录,如该目录非空则抛出异常
removedirs(path) 递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常
rename(old, new) 将文件old重命名为new
system(command) 运行系统的shell命令,显示执行命令后的返回,与返回执行是否成功0/1
walk(top) 遍历top路径以下所有的子目录,返回一个三元组:(路径, [包含目录], [包含文件])
以下是支持路径操作中常用到的一些定义,支持所有平台(相当于常量)
os.curdir 指代当前目录('.')
os.pardir 指代上一级目录('..')
os.sep 输出操作系统特定的路径分隔符(Win下为'\\',Linux下为'/')
os.linesep 当前平台使用的行终止符(Win下为'\r\n',Linux下为'\n')
os.name 指代当前使用的操作系统(包括:'posix', 'nt', 'mac', 'os2', 'ce', 'java')
os.popen(命令) 执行指定的系统可执行脚本的命令
os模块案例1:
#!/usr/bin/python3
#功能:OS模块的使用
import os
print("当前路径:",os.getcwd())
os.chdir('C:\\Users\\Administrator\\Desktop\\Python') #修改路径
print("修改后的路径:",os.getcwd())
os.mkdir('.\\test') #创建目录
os.makedirs('.\\web\\a\\b') # 目录已存在时,无法创建该目录以及多级目录
#os.remove('.\\demo2-10.txt') #删除文件
os.rmdir('.\\test') #移除单个目录
os.removedirs('.\\web\\a\\b') #移除多个目录
print(os.system('DATE /T')) #执行成功返回0,否则为1
print(list(os.walk(os.curdir))) #遍历当前目录 os.pardir()
print('指定分隔符:',os.sep)
print('当前平台的中止符号: %s' %os.linesep) #\r\n
print('当前使用的操作吸引:',os.name)

OS模块
os模块案例2: 描述:采用os.popen来替代os.system来执行系统命令;
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#获取本机的开放端口Linux/Windwos
command = "netstat -an|findstr TCP"
command = "netstat -tnlp|egrep -i tcp|awk {'print $4'}|awk -F':' '{print $NF}'|sort"
lines = os.popen(command).readlines() #关键点
for line in lines:
port = line.split()
port_list.append(port[0])
command = "netstat -an|findstr TCP"
lines = os.popen(command).readlines() #关键点
for line in lines:
port=line.split()
port=port[1].split(':')
print(port[1])
# runfile('E:/githubProject/Study-Promgram/Python3/Day9/os.popen.py', wdir='E:/githubProject/Study-Promgram/Python3/Day9')
# 135
# 443
# 445
# 902
#示例2.获取本机的ip地址信息
for k in os.popen("ip addr").readlines():
print(k)
# 15: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 group default qlen 1
# link/ether 98:90:96:e1:91:d6
# inet 192.168.1.88/24 brd 10.20.172.255 scope global dynamic
# valid_lft 691196sec preferred_lft 691196sec
# inet6 fe80::d97d:fe6c:10bf:4244/64 scope link dynamic
# valid_lft forever preferred_lft forever
os.path 类模块
描述:os.path模块路径常用的函数使用方法
basename(path) 去掉目录路径,单独返回文件名
dirname(path) 去掉文件名,单独返回目录路径
join(path1[, path2[, …]]) 将path1, path2各部分组合成一个路径名
split(path) 分割文件名与路径,返回(f_path, f_name)元组。如果完全使用目录,它也会将最后一个目录作为文件名分离,且不会判断文件或者目录是否存在
splitext(path) 分离文件名与扩展名,返回(f_name, f_extension)元组
getsize(file) 返回指定文件的尺寸,单位是字节
getatime(file) 返回指定文件最近的访问时间(浮点型秒数,用time模块的gmtime()或localtime()函数换算)
getctime(file) 返回指定文件的创建时间(浮点型秒数,同上)
getmtime(file) 返回指定文件最新的修改时间(浮点型秒数,同上)
以下为函数返回 True 或 False
exists(path) 判断指定路径(目录或文件)是否存在
isabs(path) 判断指定路径是否为绝对路径
isdir(path) 判断指定路径是否存在且是一个目录
isfile(path) 判断指定路径是否存在且是一个文件
islink(path) 判断指定路径是否存在且是一个符号链接
ismount(path) 判断指定路径是否存在且是一个挂载点
samefile(path1, paht2) 判断path1和path2两个路径是否指向同一个文件
案例:
#!/usr/bin/python3
#功能:OS模块使用
import os
print(os.path.basename('E:\\web\\conf\\test.php'))
print(os.path.dirname('E:\\web\\conf\\test.php'))
print(os.path.join('E:\\','test\\demo.php')) #注意path1在绝对路径需要加入转义符号
print(os.path.split('E:\\web\\conf\\test.php'))
print(os.path.splitext('E:\\web\\conf\\test.php'))
print(os.path.getsize(os.curdir + '\\python.txt'),'Bytes')
print("建立时间:",os.path.getctime(os.curdir + '\\python.txt'),'ms')
print("修改时间:",os.path.getmtime(os.curdir + '\\python.txt'),'ms')
print("访问时间:",os.path.getatime(os.curdir + '\\python.txt'),'ms')
if os.path.exists('.\\python.txt'):
print("目录或者文件存在")
else:
print('目录或者文件不存在')
print("是否为绝对路径:",os.path.isabs('.\\python.txt'))
print("是否是文件:",os.path.isfile('.\\python.txt'),"是否是目录:",os.path.isdir(os.pardir+'\\python'))
print("判断是否是挂载点:",os.path.ismount('D:\\'))

os.path 模块
sys 模块
描述:属性与参数一览表 (1) sys.argv CMD列表参数的获取
import sys #系统模块
sys.setdefaultenconding('utf-8|gb2312') #设置系统默认的编码格式
sys.version_info #当前Python版本信息
# sys.version_info(major=3, minor=7, micro=3, releaselevel='final', serial=0)

浙公网安备 33010602011771号