加载中...

os模块


os模块

os模块是和操作系统相关的数据的模块,指直接对操作系统进行操作。

常用的方法

1、os.path.exists(path) ,如果path存在,返回True;如果path不存在,返回False

2、os.stat(‘20190409_192149.mp4’).st_size , 获取文件大小(字节),返回值是 int 类型

读取大文件示例:

import os

# 1. 读取文件大小(字节)
file_size = os.stat('20190409_192149.mp4').st_size

# 2.一点一点的读取文件
read_size = 0
with open('20190409_192149.mp4',mode='rb') as f1,open('a.mp4',mode='wb') as f2:
    while read_size < file_size:
        chunk = f1.read(1024) # 每次最多去读取1024字节
        f2.write(chunk)
        read_size += len(chunk)
        val = int(read_size / file_size * 100)
        print('%s%%\r' %val ,end='')

3、os.path.abspath(path) , 获取一个文件的绝对路径 (返回文件绝对路径推荐使用:os.path.realpath(path),因为abspath可能返回软链接路径)

path = '20190409_192149.mp4' # D:\code\s21day14\20190409_192149.mp4

import os
v1 = os.path.abspath(path)
print(v1)

'''
输出:D:\code\s21day14\20190409_192149.mp4
返回值类型:str
'''

4、os.path.dirname(path) ,获取路径的上级目录

import os
v = r"D:\code\test\20190409_192149.mp4"
a = os.path.dirname(v)
print(a,type(a))
'''
输出结果:D:\code\test
返回值类型:str
'''

5、os.path.join(路径,文件名) ,路径的拼接

import os
path = "D:\code\test" # user/index/inx/fasd/
v = 'n.txt'

result = os.path.join(path,v)
print(result)
result = os.path.join(path,'n1','n2','n3')
print(result)
'''
输出结果:D:\code\test\n.txt
        D:\code\test\n1\n2\n3
返回值类型:str
'''

6、os.listdir(path) , 查看一个目录下所有的文件【第一层】

import os

result = os.listdir(r'D:\code\test')
for path in result:
    print(path)

7、os.walk(path), 查看一个目录下所有的文件【所有层】

import os

result = os.walk(r'D:\code\s21day14')
for a,b,c in result:
    # a,正在查看的目录 b,此目录下的文件夹  c,此目录下的文件
    for item in c:
        path = os.path.join(a,item)
        print(path)

总结

os模块中关于文件/目录常用的函数使用方法
函数名 使用方法
getpid() 返回当前进程pid(process id)
getppid() 返回当前父进程pid(parent process id)
getcwd() 返回当前工作目录
chdir(path) 改变工作目录
listdir(path='.') 列举指定目录中的文件名('.'表示当前目录,'..'表示上一级目录)
mkdir(path) 创建单层目录,如该目录已存在抛出异常
makedirs(path) 递归创建多层目录,如该目录已存在抛出异常,注意:'E:\\a\\b'和'E:\\a\\c'并不会冲突
remove(path) 删除文件
rmdir(path) 删除单层目录,如该目录非空则抛出异常
removedirs(path) 递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常
rename(old, new) 将文件old重命名为new
system(command) 运行系统的shell命令
walk(top) 遍历top路径以下所有的子目录,返回一个三元组:(路径, [包含目录], [包含文件])
以下是支持路径操作中常用到的一些定义,支持所有平台
os.curdir 指代当前目录('.')
os.pardir 指代上一级目录('..')
os.sep 输出操作系统特定的路径分隔符(Win下为'\\',Linux下为'/')
os.linesep 当前平台使用的行终止符(Win下为'\r\n',Linux下为'\n')
os.name 指代当前使用的操作系统(包括:'posix', 'nt', 'mac', 'os2', 'ce', 'java')
os.path模块中关于路径常用的函数使用方法
函数名 使用方法
basename(path) 去掉目录路径,单独返回文件名
dirname(path) 去掉文件名,单独返回目录路径
abspath(path) 返回指定文件的全部路径,含软链接
realpath(path) 返回指定文件的绝对路径(当前文件所在的绝对路径,不含软链接)(返回绝对路径推荐这个!)
join(path1[, path2[, ...]]) 将path1, path2各部分组合成一个路径名
split(path) 分割文件名与路径,返回(f_path, f_name)元组。如果完全使用目录,它也会将最后一个目录作为文件名分离,且不会判断文件或者目录是否存在
splitext(path) 分离文件名与扩展名,返回(f_name, f_extension)元组
getsize(file) 返回指定文件的尺寸,单位是字节
getatime(file) 返回指定文件最近的访问时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)
getctime(file) 返回指定文件的创建时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)
getmtime(file) 返回指定文件最新的修改时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)
以下为函数返回 True 或 False
exists(path) 判断指定路径(目录或文件)是否存在
isabs(path) 判断指定路径是否为绝对路径
isdir(path) 判断指定路径是否存在且是一个目录
isfile(path) 判断指定路径是否存在且是一个文件
islink(path) 判断指定路径是否存在且是一个符号链接
ismount(path) 判断指定路径是否存在且是一个挂载点
samefile(path1, paht2) 判断path1和path2两个路径是否指向同一个文件

文章作者: 无夜
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 无夜 !
评论
  目录