os模块
调用os(操作系统)模块函数:
调用模块内函数,先要导入,导入模块,要放在文件最前面
import os
# 1.判断操作系统类型
# 根据os.name的值判断是什么系统:
# 值为posix是linux操作系统,值为nt则是windows操作系统
print(os.name)
print('windows' if os.name == 'nt' else 'Linux') # if条件语句的简写形式
# 2.操作系统详细信息
info = os.uname()
print(info)
print(info.sysname)
# 3.查看系统环境变量 (在shell中使用echo $PATH)
print(os.environ)
# 通过key值查看环境变量对应的value值
print(os.environ.get('PATH'))
# 4.判断是否绝对路径(以根目录/开始,开头,与目录是否真实存在无关)
print(os.path.isabs('/asd/'))
print(os.path.isabs('asd/'))
# 5.生成绝对路径(仅仅是根据传入的参数(字符串)生成代表绝对路径形式的字符串,与系统中是否存在相应的真实文件无关)
# print(os.path.abspath('asd/'))
print(os.path.abspath('.')) # 生成当前目录的绝对路径
print(os.path.abspath('..')) # 生成当前目录的上一级目录的绝对路径
print(os.path.join(os.path.abspath('.'),'hello')) # 生成当前目录的绝对路径 与 hello路径相连接
print(os.path.join(os.path.abspath('..'),'hello'))
print(os.path.join(os.path.abspath('-'),'hello/hello1/hello2'))
# 6.获取目录名和文件名
full_name = 'home/dd/Desktop'
print(os.path.basename(full_name))
print(os.path.dirname(full_name))
# 7.创建目录
os.mkdir('img') #在当前目录下,创建目录文件img
#os.makedirs('img/dir1/dir2') #在当前目录下,递归创建目录文件img/dir1/dir2,中间不存在的目录文件如第如dir1,会自动创建
os.rmdir('img') #删除在当前目录下的目录文件img 注意,该函数无法第归地删除目录文件
# 8.创建文件 删除文件
os.mknod('imgs.txt') #在当前目录下,创建文件imgs.txt
os.remove('imgs.txt') #删除在当前目录下的文件imgs.txt
# 9.文件重命名
os.rename('imgs.txt','img.txt')
# 10.判断文件或目录是否存在
print(os.path.exists('test.py'))
print(os.path.exists('test1.py'))
# 11.分离后缀名和文件名
print(os.path.splitext('test.py'))
# 12.将目录名和文件名分离
print(os.path.split('/tmp/hello/test.py'))
13.列出目录下所有文件
print(os.listdir('/'))
14.获得指定文件的时间
os.path.getatime(file) #输出最近访问时间(最后一次访问时间)
os.path.getctime(file) #输出文件创建时间
os.path.getmtime(file) #输出最近修改时间
以上三个函数的返回值均以从1970年到目标时间的秒数,即时间戳
(下面的time时间模块中,会介绍到如何将时间戳转化为我们所熟悉的形式来表示)
time模块
调用time(时间)模块:
import time
# 1.时间戳
print(time.time()) # 返回当前时间的时间戳(1970纪元后经过的浮点秒数)
# 2.字符串时间
print(time.ctime()) # 返回当前时间的字符串时间
# 3.元组时间
info = time.localtime() # 函数得到的当前时间的元组时间表示(特殊数据结构类型存放表示)赋值给info变量引用
print(info)
info = time.localtime(time.time()) #将当前时间的时间戳表示,转换为元组时间
print(info)
print(info.tm_year) # 获取info所引用的元组时间中的tm_year的值(感觉像是字典,又像是C语言中的枚举)
print(info.tm_mon)
时间格式转换:
import time
import os
# 把元组时间转换为时间戳
tuple_time = time.localtime() # 获取当前时间的元组时间
print(tuple_time)
print(time.mktime(tuple_time)) # 将元组时间转换为时间戳
# 把元组时间转化成字符串时间
print(time.strftime('%d-%m',tuple_time)) # 将元组时间转换为不同格式的字符串时间,具体查看函数参数
print(time.strftime('%Y/%m/%d',tuple_time))
print(time.strftime('%T',tuple_time))
print(time.strftime('%F',tuple_time))
# 将时间戳类型的时间转换成字符串时间
pwd_time = os.path.getctime('/etc/passwd')
print('pwd_time',pwd_time)
print(time.ctime(pwd_time)) # 将时间戳转换为字符串时间
# 将时间戳转换为元组
print(time.localtime(pwd_time))
datetime
import os
import time
from datetime import date
# import datetime
from datetime import datetime
from datetime import timedelta
print(date.today()) # 输出当前日期
print(datetime.now()) # 输出当前时间
# 输出三天前的时间和三天后的时间
d = date.today()
delta = timedelta(days=3)
print(d + delta)
print(d - delta)
# 计算两个小时前的时间和两个小时后的时间
now_hour = datetime.now()
delta = timedelta(hours=2)
print(now_hour - delta)
print(now_hour + delta)
# 返回两个时间,计算这两个时间之间的时间差
now_time = datetime.now()
print(now_time)
pwd_time = os.path.getmtime('/etc/passwd') # 获取文件的最近修改时间,这个是以时间戳形式
print(time.ctime(pwd_time))
pwd_time_obj = datetime.fromtimestamp(pwd_time) # 将获取的时间戳格式,返回一个相同时间的datetime对象
print(pwd_time_obj)
delta = now_time - pwd_time_obj
print(delta)
difflib
"""
什么是difflib? 用来做什么?
difflib为python的标准库模块,无需安装。
作用时对比文本之间的差异。
并且支持输出可读性比较强的HTML文档,与Linux下的diff 命令相似。
在版本控制方面非常有用。
2. 符号理解
符号 含义
'-' 包含在第一个系列行中,但不包含第二个。
'+' 包含在第二个系列行中,但不包含第一个。
' ' 两个系列行一致
'?' 存在增量差异
'^' 存在差异字符
text1 = ''' 1. Beautiful is better than ugly.
2. Explicit is better than implicit.
3. Simple is better than complex.
4. Complex is better than complicated.
'''
text2 = ''' 1. Beautiful is better than ugly.
3. Simple is better than complex.
4. Complicated is better than complex.
5. Flat is better than nested.
'''
"""
import difflib
text1 = ''' 1. Beautiful is better than ugly.
2. Explicit is better than implicit.
3. Simple is better than complex.
4. Complex is better than complicated. '''.splitlines(keepends=True)
text2 = ''' 1. Beautiful is better than ugly.
3. Simple is better than complex.
4. Complicated is better than complex.
5. Flat is better than nested.
'''.splitlines(keepends=True)
# Python splitlines() 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符
"""
splitlines()按照行分割
返回一个包含各行作为元素的列表
参数:
keepends=True 保留换行符
keepends=False 不包含换行符
"""
# 实现类似linux里面的diff命令的功能
# d = difflib.Differ()
#
# print(''.join(list(d.compare(text1,text2))))
d = difflib.HtmlDiff() # 变量d去引用该方法返回的对象
htmlContent = d.make_file(text1,text2) # d调用该方法的make_file(text1,text2)
# print(htmlContent)
with open('diff.html','w') as f: # 将上面生成的html内容写入diff.html文件中
f.write(htmlContent)
上面的是两个字符串的对比,两个文件之间的对比如下:
import difflib
filename1 = '/tmp/passwd'
filename2 = '/tmp/passwd1'
with open(filename1) as f1,open(filename2) as f2:
content1 = f1.read().splitlines(keepends=True)
content2 = f2.read().splitlines(keepends=True)
# 将两个文件的内容读入,分别由两个变量去引用,再进行比较
d = difflib.HtmlDiff()
htmlContent = d.make_file(content1,content2)
with open('passwdDiff.html','w') as f:
f.write(htmlContent)
sys
sys.version # python解释器的版本
sys.path # python的环境变量
具体示例:
import os
import sys
# 获取执行时传入文件内的参数
print(sys.argv) # 解释器后的均为参数,也即是说,文件名及文件名后的都是参数
print('----------分割线----------')
# 获取脚本传递的第一个参数
print(sys.argv[0])
print('----------分割线----------')
# 获取脚本传递的第二个参数
print(sys.argv[1])
print('----------分割线----------')
print(sys.version) # python解释器版本信息
print(sys.version[:3])
if sys.version[0] == '2':
print('running in python2...')
elif sys.version[0] == '3':
print('running in python3')
print('----------分割线----------')
#返回模块的搜索路径 初始化PYTHON PATH环境变量
print(sys.path)
# 可以实现跨平台
print(sys.platform)
if sys.platform == 'linux':
os.system('ifconfig')
else:
os.system('ipconfig') # windows系统下使用ipconfig命令查询ip地址
该程序在下面的terminal终端窗口中运行