Python之os模块
- os模块的作用
Python os模块包含普遍的操作系统功能
1.文件的读写操作
2.文件的各种系统操作
3.存储对象
- os模块的使用
返回操作系统类型 :os.name
值为:posix 是linux操作系统
>>> import os
>>> print(os.name)
posix
>>> print('Linux' if os.name == 'posix' else 'Windows')
Linux
操作系统的详细信息:os.uname() .sysname .nodename
>>> import os
>>> info = os.uname()
>>> print(info)
posix.uname_result(sysname='Linux', nodename='foundation13.ilt.example.com', release='3.10.0-514.el7.x86_64', version='#1 SMP Wed Oct 19 11:24:13 EDT 2016', machine='x86_64')
>>> print(info.sysname)
Linux
>>> print(info.nodename)
foundation13.ilt.example.com
系统的环境变量:os.environ
>>> print(os.environ)
environ({'XDG_VTNR': '1', 'SSH_AGENT_PID': '1777', 'XDG_SESSION_ID': '1', 'HOSTNAME': 'foundation13.ilt.example ##此处省略
>>> print(os.environ.get('PATH'))
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/kiosk/.local/bin:/home/kiosk/bin
判断是否是绝对路径:os.path.isabs
只会判断路径,并不会判断目录或者文件是否存在
>>> print(os.path.isabs('/tmp/fff'))
True
>>> print(os.path.isabs('hello.jog'))
False
生成绝对路径:os.path.abspath
>>> print(os.path.abspath('hello.png'))
/home/kiosk/hello.png
>>> print(os.path.join(os.path.abspath('.'),'hello.jpg'))
/home/kiosk/hello.jpg
>>> print(os.path.join('/home/kiosk','hello.jpg'))
/home/kiosk/hello.jpg
获取目录或文件名:os.path.basename(filename)) os.path.dirname(filename))
>>> filename = '/home/dd/20190523/day06/hello.jpg'
>>> print(os.path.basename(filename))
hello.jpg
>>> print(os.path.dirname(filename))
/home/dd/20190523/day06
创建/删除目录:os.mkdir()创建 os.makedirs()递归创建 os.rmdir()删除
注意:不能递归删除目录
>>> os.mkdir('img')
>>> os.makedirs('img/file1/file2')
>>> os.rmdir('img')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 39] Directory not empty: 'img'
>>> os.rmdir('img/file1/file2')
>>> os.rmdir('img/file1')
>>> os.rmdir('img')
创建/删除文件:os.mknod()创建 os.remove()删除
>>> os.mknod('00_ok.txt')
>>> os.remove('00_ok.txt')
文件重命名:os.rename()
>>> os.mknod('00_ok.txt')
>>> os.rename('00_ok.txt','11_os.txt')
判断文件或目录是否存在:os.path.exists()
>>> print(os.path.exists('ips.txtyyyy'))
False
分离后缀名和文件名:os.path.splitext()
>>> print(os.path.splitext('hello.jpg'))
('hello', '.jpg')
将目录名和文件名分离:os.path.split()
>>> print(os.path.split('/tmp/hello/hello.jpg'))
('/tmp/hello', 'hello.jpg')
- os模块的示例
1.在当前目录新建目录img, 里面包含多个文件, 文件名各不相同(X4G5.png)
2.将当前img目录所有以.png结尾的后缀名改为.jpg
import random
import string
import os
def gen_code(len=4):
# 随机生成4位验证码
li = random.sample(string.ascii_letters+string.digits,len)
return ''.join(li)
def create_file():
# 随机生成100个验证码
li = {gen_code() for i in range(100)}
os.mkdir('img')
for name in li:
os.mknod('img/' + name + '.png')
# create_file()
def modify_suffix(dirname,old_suffix,new_suffix):
"""
:param dirname:操作的目录
:param old_suffix: 之前的后缀名
:param new_suffix: 新的后缀名
:return:
"""
# 1.判断查找的目录是否存在,如果不存在,报错
if os.path.exists(dirname):
# 2.找出所有以old_suffix(.png)结尾的文件
pngfile = [filename for filename in os.listdir(dirname)
if filename.endswith(old_suffix)]
# 3.将后缀名和文件名分开,留下文件名
basefiles = [os.path.splitext(filename)[0]
for filename in pngfile]
# 4.重命名文件
for filename in basefiles:
oldname = os.path.join(dirname,filename+old_suffix)
newname = os.path.join(dirname,filename+new_suffix)
os.rename(oldname,newname)
print('%s命名为%s成功' %(oldname,newname))
else:
print('%s不存在,不能操作...' %(dirname))
modify_suffix('redhat','.jpg','.png')
END