Python os模块

查看操作系统的名称

	# 输出操作系统的名称  Windows 返回 'nt',Linux 返回'posix'
    print(os.name)

查看路径的权限

	import os
    """
    R   read    读
    W   write   写
    F   file    文件是否存在
    X           可执行 
    """
    # 判断该路径是否有读取权限
    print(os.access("hello.txt", os.R_OK))
    # 判断该路径是否有写入权限
    print(os.access("hello.txt", os.W_OK))
    # 判断该路径是否存在
    print(os.access("hello.txt", os.F_OK))
    # 判断该路径是否有执行权限
    print(os.access("hello.txt", os.X_OK))

修改路径的权限

	import os
    import stat
    """
    ch mod      change mode         改变权限
    
    详细权限如下
    stat.S_IXOTH: 其他用户有执行权0o001
    stat.S_IWOTH: 其他用户有写权限0o002
    stat.S_IROTH: 其他用户有读权限0o004
    stat.S_IRWXO: 其他用户有全部权限(权限掩码)0o007
    stat.S_IXGRP: 组用户有执行权限0o010
    stat.S_IWGRP: 组用户有写权限0o020
    stat.S_IRGRP: 组用户有读权限0o040
    stat.S_IRWXG: 组用户有全部权限(权限掩码)0o070
    stat.S_IXUSR: 拥有者具有执行权限0o100
    stat.S_IWUSR: 拥有者具有写权限0o200
    stat.S_IRUSR: 拥有者具有读权限0o400
    stat.S_IRWXU: 拥有者有全部权限(权限掩码)0o700
    stat.S_ISVTX: 目录里文件目录只有拥有者才可删除更改0o1000
    stat.S_ISGID: 执行此文件其进程有效组为文件所在组0o2000
    stat.S_ISUID: 执行此文件其进程有效用户为文件所有者0o4000
    stat.S_IREAD: windows下设为只读
    stat.S_IWRITE: windows下取消只读
    """
   

    # 把目录的权限设为可执行
    os.chmod("hello.txt", stat.S_IXUSR)

查看当前工作目录

	import os
 	"""
    cwd     current work directory  当前工作目录   
    """
    # 得到当前工作目录
    print(os.getcwd())

改变当前工作目录

	import os
    """
    ch  change  改变
    """
    # 把当前工作目录改为'/'(linux系统的根目录)
    os.chdir('/')

查看目录下所有内容

	import os
 	"""
    list dir        list directory      文件夹下所有内容(文件、文件夹)
    """
    # 输出根目录下的所有内容,不输入参数,代表默认目录
    print(os.listdir('/'))

创建文件夹

	import os
	"""
    mk dir          make directory   创建文件夹
    make dirs        make directorys   创建多个文件夹
    
    两者的区别:mkdir创建的文件夹必须是上一层已经存在
                例如:A文件夹内部没有任何文件夹,你可以mkdir(A/B):在A内部建立B文件夹
                    你不可以mkdir(A/B/C),因为你创建的是C文件夹,但是B文件夹本身不存在
                makedirs无论上一层文件夹是否存在,都可以创建成功
                例如:make dirs(A/B/C),系统反馈B文件夹不存在,那么mkdirs就先创建B文件夹,再创建A文件夹
    """
    # 创建单个文件夹
    os.mkdir('/Users/apple/Desktop/HELP/nihao')
    # 创建多个文件夹
    os.makedirs('/Users/apple/Desktop/HELP/nihao/nihao/shijie')

删除文件夹、文件

	import os
 	"""
    remove      删除文件,不能删除文件夹
    rmdir       删除一个空文件夹
    removedirs  删除多个空文件夹  removedirs('A')代表:删除A下面的所有空文件夹,递归删除
    """
    # 删除一个文件
    os.remove("nihao.txt")
    # 删除一个空文件夹
    os.rmdir('ceshi')
    # 删除多个空文件夹
    os.removedirs('A')

重命名路径

	import os
	"""
    rename      重命名
    renames     重命名多个
    两者的区别:A文件下面有B
            你可以用rename(A/B,A/C)把文件夹B的名称改为C,你不能rename(A/B,A/C/B),因为C文件夹不存在。
            然而renames并不在意命名的文件夹上级目录是否存在,如果系统反馈上级目录不存在,那么就创建上级目录。这也是结尾加s的原因,因为涉及到多个文件夹    
    """
    # 将左边的文件名  改为   右边的名称
    os.rename("hello.txt", "nihao.txt")
    # 将左边的目录名  改为   右边的目录名
    os.rename("/A/B", "/A/C")
    # 将左边的目录或者文件    改为  右边的名称
    os.renames("/A/B", "/A/C/B")

查看文件的详细信息

	import os
    import stat
    import time
 	"""
 	sta		state  状态、情形
 	
    st_mode: inode 保护模式
    st_ino: inode 节点号。
    st_dev: inode 驻留的设备。
    st_nlink: inode 的链接数。
    st_uid: 所有者的用户ID。
    st_gid: 所有者的组ID。
    st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。
    st_atime: 上次访问的时间。
    st_mtime: 最后一次修改的时间。
    st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。
    """
    # 获得文件对象
    file = os.stat("/Users/apple/Desktop/HELP_1 2/")

    """
    得到文件的上一次的修改时间,结果是毫秒格式,机器看得懂,人看不懂。
    剩下的方法自己有兴趣可以都试一下
    """
    timeMachine = file.st_mtime
    # 把时间转为人能看得懂的格式
    timePerson = time.localtime(int(file.st_mtime))
    timePerson = time.strftime("%Y-%m-%d %H:%M:%S", timePerson)
    # 输出修改时间    2021-01-15 10:02:10
    print(timePerson)

查看目录的结构

	import os
	"""
    walk    随处走走     我们随处走走探索世界结构   系统随处走走是探索文件夹结构
    
    三个参数:
    topdown --可选,为True,则优先遍历 top 目录,否则优先遍历 top 的子目录。默认值是True

    onerror -- 可选,需要一个 callable 对象,当 walk 需要异常时,会调用。

    followlinks -- 可选,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link )实际所指的目录
                        如果为 False,则优先遍历 top 的子目录。默认值是False
    返回值:三元数组:(root,dirs,files)
            root 所指的是当前正在遍历的这个文件夹的本身的地址
            dirs 是一个 list ,内容是该文件夹中所有的文件夹的名字
            files 同样是 list , 内容是该文件夹中所有文件的名字
    """
    # 获得文件夹的结构
    info = os.walk('/Users/apple/Desktop/HELP_1')
    # 得到文件结构,输出所有文件、文件夹的路径
    for root, dirs, files in info:
        # 循环
        for i in files:
            # 输出文件路径
            print('文件路径:' + os.path.join(root, i))
        # 循环
        for i in dirs:
            # 输出文件夹路径
            print('文件夹路径:' + os.path.join(root, i))

查看文件的绝对路径、相对路径、文件名称、上层文件夹的路径

	import os
	"""
    abs     absolute        绝对
    base    基础
    dir     directory       文件夹
    real    实际的
    rel     relative        相对
    """
    # 输出文件的绝对路径
    print(os.path.abspath('nihao.txt'))
    # 输出文件的文件名
    print(os.path.basename('nihao.txt'))
    # 输出文件上层文件夹的路径
    print(os.path.dirname('/Users/apple/PycharmProjects/pythonTest/tool_Ives/nihao.txt'))
    # 输出路径的真实路径,也就是绝对路径
    print(os.path.realpath('nihao.txt'))
    # 输出'nihao.txt'相对'当前工作目录'的路径   PS:os.getcwd()获得当前工作目录
    print(os.path.relpath('nihao.txt', os.getcwd()))

查看路径是否存在

	import os
	"""
    exists   存在
    """
    # 如果路径(文件、文件夹)存在则返回True,不存在返回False
    print(os.path.exists('/Users/apple/PycharmProjects/pythonTest/tool_Ives/nihao.txt'))

查看路径是否为绝对路径、是否为文件、是否为目录

	import os
    """
    abs     absolute       绝对
    dir     directory       文件夹
    file    文件
    """
    # 判断路径是否为绝对路径,返回True、False
    print(os.path.isabs('nihao.txt'))
    # 判断路径是否为文件夹,返回True、False
    print(os.path.isdir('nihao.txt'))
    # 判断路径是否为文件,返回True、False
    print(os.path.isfile('nihao.txt'))

查看路径的最近访问时间、最近修改时间、创建时间、大小

	import os

    """
    a   access      使用
    c   create      创建
    m   modify      修改
    """

    """
    把毫秒格式的时间改为年月日时分秒的格式
    import time
    # 获得文件最近修改的时间,毫秒格式,人类看不懂
    timeMachine = os.path.getmtime('nihao.txt')
    # 把时间转为年月日的格式,人类能看懂的格式
    timePerson = time.localtime(int(timeMachine))
    timePerson = time.strftime("%Y-%m-%d %H:%M:%S", timePerson)
    # 输出时间
    print(timePerson)
    """
    # 输出路径最近访问时间(毫秒格式)
    print(os.path.getatime('nihao.txt'))
    # 输出路径创建时间(毫秒格式)
    print(os.path.getctime('nihao.txt'))
    # 输出路径最近修改时间(毫秒格式)
    print(os.path.getmtime('nihao.txt'))
    # 输出路径的大小(单位:字节)
    print(os.path.getsize('nihao.txt'))

拼接目录和文件名(无视操作系统的差异)

最常见的两种操作系统:windows和mac。它们的目录分隔符是不一致的。

Windows
C:\some_folder\some_file.txt

mac
/some_folder/some_file.txt

例如:我用的是mac系统,我想在文件夹A下创建一个文件夹B

import os
os.mkdir('A/B')

这行代码放到windows系统运行,必然报错,因为windows的目录分隔符是‘\’,它不认识‘/’,所以为了跨平台的兼容性,我们可以这样写。

import os
# 根据不得的操作系统得到不同的目录分隔符,拼接路径
dir=os.path.join('A', 'B')
# 创建文件夹
os.mkdir(path)

查看两个路径是否相等

	import os
	"""
    same      相同
    这里判断两个路径是否相同的依据:两个路径名是否引用相同的实际文件
    两个文件(就算是复制的),也不会相等。相等的前提是只有一个文件,两个引用,例如:相对路径和绝对路径
    """
    # 输出两个文件是否为同一个文件   左边是相对路径  右边是绝对路径  但两者指向的都是同一个文件
    print(os.path.samefile("nihao.txt", '/Users/apple/PycharmProjects/pythonTest/tool_Ives/nihao.txt'))

得到路径的文件夹和文件名

	import os
	"""
    split   分割
    把路径分割成 dirname 和 basename,返回一个元组
    """
    dirname, basename = os.path.split('/Users/apple/PycharmProjects/pythonTest/tool_Ives/nihao.txt')
    # 输出文件夹名称
    print(dirname)
    # 输出文件名称
    print(basename)

得到路径的绝对文件名和后缀

	import os
	"""
    split    分割
    分割路径,返回路径名和文件扩展名(后缀)
    """
    name, suffix = os.path.splitext('/Users/apple/PycharmProjects/pythonTest/tool_Ives/nihao.txt')
    # 输出路径名
    print(name)
    # 输出文件后缀
    print(suffix)

执行终端指令

	import os
	"""
    system  系统 
    执行shell指令  mac的终端  windows的cmd
    """
    # ls是shell指令,list的意思。终端执行ls:查看当前文件夹的内容
    os.system('ls')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值