python库整理:os

1 检查路径访问权限(os.access)

os.access(path,mode)

  • path -- 要用来检测是否有访问权限的路径。
  • mode -- mode为F_OK,测试存在的路径,或者它可以是包含R_OK, W_OK和X_OK或者R_OK, W_OK和X_OK其中之一或者更多。
    • os.F_OK: 作为access()的mode参数,测试path是否存在。
    • os.R_OK: 包含在access()的mode参数中 , 测试path是否可读。
    • os.W_OK 包含在access()的mode参数中 , 测试path是否可写。
    • os.X_OK 包含在access()的mode参数中 ,测试path是否可执行。
    • 上述参数如果是可以,那么返回True,否则返回False

2 当前工作目录(os.getcwd)

3 改变当前工作目录到指定的路径(os.chdir)

os.chdir(path)

change direction

4 修改当前进程的根目录(os.chroot)

os.chroot(path)

修改当前进程的根目录

这一个函数需要管理员权限

5 关闭指定文件(os.close)

os.close(file)

6 返回指定的文件夹包含的文件或文件夹的名字的列表(os.listdir)

7 递归创建目录(os.makedirs)

8 创建最后一级目录(os.mkdir)

如果目录有多级,那么创建最后一级

如果最后一级目录的上一级目录是不存在的,那么抛出一个OSError

os.makedirs就可以

9 打开文件(os.open)

os.open(file,flag)

flags -- 该参数可以是以下选项,多个使用 "|" 隔开:

  • os.O_RDONLY: 以只读的方式打开
  • os.O_WRONLY: 以只写的方式打开
  • os.O_RDWR : 以读写的方式打开
  • os.O_NONBLOCK: 打开时不阻塞
  • os.O_APPEND: 以追加的方式打开
  • os.O_CREAT: 创建并打开一个新文件
  • os.O_TRUNC: 打开一个文件并截断它的长度为零(必须有写权限)
  • os.O_EXCL: 如果指定的文件存在,返回错误
  • os.O_SHLOCK: 自动获取共享锁
  • os.O_EXLOCK: 自动获取独立锁
  • os.O_DIRECT: 消除或减少缓存效果
  • os.O_FSYNC : 同步写入
  • os.O_NOFOLLOW: 不追踪软链接

10 读取n个字节的file文件(os.read)

os.read(file,n)

11 移除一个文件(os.remove/os.unlink)

os.remove(file)

移除一个文件

如果file是一个文件夹,那么会抛出OSError

12 递归移除目录(os.removedirs)

os.removedirs(path)

13 删除目录(os.rmdir)

只有指定文件夹是空的时候,才可以删除,否则,抛出OSError

14 重命名(os.rename)

os.rename(src1,src2)

重命名文件/目录,从src1命名为src2

如果路径不同,会移动并重新命名

15 递归地重命名(os.renames)

os.renames(src1,src2)

递归地重命名目录/文件

16 执行命令(os.system)

在命令行上执行括号里面的命令

注:命令行和主程序是同步执行的。也就是说,在尚未执行完成的情况下,主程序不会继续执行下去

17 os.path

17.1 判断括号里的文件是否存在(os.path.exists)

判断括号里的文件是否存在(可以是文件路径,默认为当前路径)

17.2 返回文件的绝对路径

os.path.abspath()和os.path.realpath()

如果参数为空,那么返回当前文件所在目录的绝对路径

17.3 连接两个或更多的路径名(os.path.join)

连接两个或更多的路径名组

如果如果各组件名首字母不包括'/',那么函数会自动加上

如果有一个组件是一个绝对路径,那么在他之前的所有组件都会被舍弃

如果最后一个组件为空,那么生成的路径是一个以'/'作为分隔符结尾的路径

17.4 返回文件所在的文件夹的路径(Os.path.dirname)

必须是实际存在的py文件,如果在命令行直接,就会引发异常(__file__ is not defined)

一般常和abspath连用,效果更好

17.5 是否是目录类型(os.path.isdir)

os.path.isdir

是否是目录类型

17.6 是否是文件类型(os.path.isfile)

17.7 把文件名和后缀进行切分(os.path.splitext)

split ——dirname和basename分开

17.8 返回path最后的文件名(os.path.basename)

返回path最后的文件名。如果path以/或\结尾,那么就会返回空值。

17.9 返回list(多个路径)中,所有path共有的最长的路径(os.path.commonprefix)

os.path.commonprefix(list)

17.10 文件相关时间

文件创建时间(create)

文件最近修改时间(modify)

文件最近访问时间

17.11 返回文件大小

如果文件不存在就返回错误

17.12 判断是否为绝对路径

17.13 转换path的大小写和斜杠

17.14 规范path字符串形式

17.15 计算相对路径

os.path.relpath(path[, start])

从start开始计算相对路径

17.16 判断目录或文件是否相同

os.path.samefile(path1, path2)

17.17 返回电脑的用户目录

os.path.expanduser(os.getcwd())
#'C:\\Users\\16000'

17.18 是否是绝对路径

os.path.isabs(os.getcwd())
#True
os.path.isabs('1.ipynb')
#False

18 os包应用

18.1 在指定目录下查找指定后缀名的文件,要查找所有子目录,返回文件路径名列表

import os

def get_list(base_dir='',target_ext=''):
    f_lst=[]
    #用于记录文件名称的列表
    
    for f_name in os.listdir(base_dir):
        #检查目录里面的每个文件
        
        path=os.path.join(base_dir,f_name)
#文件名绝对路径
        
        if(os.path.isfile(path)):
            #判断是否是文件
            fname,f_ext=os.path.splitext(f_name)
            #把文件名和文件后缀分开
            
            if(f_ext==target_ext):
                #如果是指定的后缀名
                f_lst.append(path)
                #将符合条件的文件加入列表
            
        elif(os.path.isdir(path)):
            #判断是否是文件类型
            tmp_list=get_list(path,target_ext)
#递归调用查找子目录中是否有指定类型文件
            
            f_lst.extend(tmp_list)
        
        else:
            pass
    
    return(f_lst)

get_list(os.getcwd(),'.txt')
   
'''
['D:\\tmp\\1.txt', 'D:\\tmp\\2.txt', 'D:\\tmp\\output\\tmp\\result.txt']
'''            

19 os.walk

按目录树的顶部开始递归地遍历每个目录,并为每个目录返回一个3-tuple,包括:

  1. 目录的路径名 (字符串):表示当前目录的路径。
  2. 该目录中的目录名 (列表):这个目录中所有子目录的名称,不包括'.'和'..'即使它们是目录。
  3. 该目录中的非目录子项的文件名 (列表)。

以geolife数据集为例,里面第一层不同用户的编号

再点进去是Trajectory文件夹

再点进去就是不同的轨迹

import os
for dirpath, dirnames, filenames in os.walk('D:\数据集\Geolife Trajectories 1.3\Geolife Trajectories 1.3\Data'):
    print("当前目录路径:", dirpath)
    print("目录列表:", dirnames)
    print("文件列表:", filenames)
    print("-" * 40)

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值