1. OS模块
os: 即Operation System 操作系统模块;
此模块是Python标准库中用于使用操作系统功能的模块.
os模块 提供了多数操作系统的功能接口函数。当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件、目录打交道,所以离不了os模块。编程时,需要实现对文件和目录进行增删改查,这就需要使用os模块提供的方法。
使用os模块时,应先导入模块:
import os
1.返回操作系统类型: os.name
返回操作系统类型:
返回值:posix是linux操作系统
返回值:nt是windows操作系统
print(os.name)
print('Linux' if os.name== 'posix' else 'Windows')
输出结果:
2.操作系统的详细信息: os.uname()
# 注意:在win10下运行此方法会报错
info = os.uname()
print(info)
输出结果包含本机操作系统类型,主机名,发行版本号,架构等信息:
同时,也可以输出你想要的具体的某个信息,例如:
info = os.uname()
print(info.sysname)
print(info.nodename)
输出结果:
3.系统的环境变量: os.environ
# 获取系统所有的环境变量
print(os.environ)
输出结果如下:
# 获取某个具体的环境变量:
# 返回此环境变量的值
print(os.environ.get('PATH'))
4.判断是否是绝对路径: os.path.isabs()
返回值
是绝对路径,返回True
相对路径,返回False
print(os.path.isabs('/tmp/gf'))
print(os.path.isabs('hello'))
运行结果:
5.生成绝对路径
1. os.path.abspath()
生成当前目录下相应的绝对路径信息,
返回值类型:字符串
print(os.path.abspath('hello.png'))
print(type(os.path.abspath('hello.png')))
输出结果如下:
2. os.path.join()
将两个参数连接起来形成一个绝对路径信息;
返回值类型:字符串
print(os.path.join(os.path.abspath('.'),'hello'))
print(os.path.join('/home/kiosk','python.jpg'))
输出结果:
6.获取目录名和文件名
1. os.path.basename()
获取文件名,返回值为字符串类型的文件名
2. os.path.dirname()
获取目录名,返回值为字符串类型的目录名
# 定义一个绝对路径
filename = '/home/dd/Desktop/filename'
# 获取文件名
print(os.path.basename(filename))
# 获取目录名
print(os.path.dirname(filename))
运行结果如下:
7. 创建目录
1. os.mkdir()
在当前目录下创建子目录:与mkdir的效果相同
若子目录不存在,则创建子目录,创建成功,返回None;
若子目录存在,则会报错。
# 创建子目录img
os.mkdir('img')
运行结果:程序无报错,进入当前目录,可看到img已经创建成功
2. os.makedirs()
在当前目录下创建多级子目录:与midir -p 的效果相同
若子目录不存在,则创建子目录,创建成功,返回None;
若子目录存在,则会报错。
os.makedirs('img/1/2')
运行效果:可看到目录被逐级创建出
8. 删除目录(不能递归删除)
os.rmdir()
只能删除空目录,即若目录中存在文件或子目录,则不能删除
若子目录不存在或不是空目录,则执行时报错;
若子目录存在且为空目录,则删除,返回None。
# 逐级删除目录
os.rmdir('img/1/2')
os.rmdir('img/1')
os.rmdir('img/')
运行结果:刚才递归创建的目录img被完全删除
9.创建文件 和 删除文件
1. os.mknod()
若文件存在,则执行时报错;
若文件不存在,则创建相应文件,返回None。
# 在当前目录下撞见文件test.txt
os.mknod('test.txt')
运行结果如下:文件被
2. os.remove()
若文件存在,则删除,删除成功返回None;
若文件不存在,则执行时报错。
# 删除当前目录下的文件text.txt
os.remove('test.txt')
运行效果:text.txt文件已经被删除
10. 文件的重命名
os.rename()
若文件存在,则对文件进行重命名,成功返回None;
若文件不存在,则执行时报错。
# 先在当前目录下创建文件text.txt
os.mknod('test.txt')
# 将text.txt文件重命名为text_rename.txt
os.rename('test.txt','test_rename.txt')
运行效果如下:
11. 判断文件或目录名是否存在
os.path.exists()
若文件或目录存在,则返回True;
若文件或目录不存在,则返回False。
# 判断当前目录下是否存在test_rename.txt文件
print(os.path.exists('test_rename.txt'))
print(os.path.exists('ips.txt'))
# 当前目录下创建img子目录,判断此目录是否存在
os.mkdir('img')
print(os.path.exists('img'))
运行结果:
12. 分离后缀名和文件名
os.path.splitext()
不判断所需分离的文件是否存在,仅将传入的参数分离;
返回一个元组,元组第一个元素是文件名,第二个元素是后缀
print(os.path.splitext('hello.jpg'))
运行结果:
可以看到,当前目录下,hello.jpg文件并不存在
13. 分离目录名和文件名
os.path.split()
不判断所需分离的文件是否存在,路径是绝对路径还是相对路径,仅将传入的参数分离;
返回一个元组,元组第一个元素是上层目录,第二个元素是文件名
# 所传路径为绝对路径
print(os.path.split('/tmp/hello/hello.png'))
运行结果:
# 所传路径为相对路径
print(os.path.split('tmp/hello/hello.png'))
运行结果:
补充:获取文件或目录的时间戳
os.path.getctime()
若文件或目录存在,则返回从1970.1.1到当前所经过的秒数,返回值为float型;
若文件或目录不存在,则报错。
time1 = os.path.getctime('/etc/group')
print(time1)
运行结果:
将此时间戳转换为我们熟悉的时间 :
import os
import time
time1 = os.path.getctime('/etc/group')
print(time1)
time2 = time.ctime(time1)
print(time2)
运行结果: