Python之os模块

78 篇文章 3 订阅
24 篇文章 2 订阅

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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值