os.path 模块提供了目录相关(路径判断、路径切分、路径连接、文件夹遍历)的操作
方法 描述
os.path.isabs(path) 判断 path 是否绝对路径
os.path.isdir(path) 判断 path 是否为目录
os.path.isfile(file) 判断file是否为文件
os.path.exists(file) 判断指定文件是否存在
os.path.getsize(filename) 返回文件的大小
os.path.abspath(path) 返回绝对路径
os.path.getctime(filename) 返回文件的创建时间
os.path.getatime(filename) 返回文件的最后访问时间
os.path.getmtime(filename) 返回文件的最后修改时间
os.path.walk(top,func,arg) 递归方式遍历目录
os.path.join(path,*paths) 连接多个 path
os.path.split(path) 对路径和文件名进行分割,以元组形式返回
os.path.splitext(path) 对路径和文件的扩展名进行分割,以元组形式返回
os.path.dirname(/path/file.txt) 返回文件所在的路径/path
os.path.basename(/path/file.txt) 返回文件名file.txt
os.path.dirname(__file__) 返回当前脚本所在的路径
os.path.basename(__file__) 返回当前脚本的文件名
import os
import os.path
print(os.path.isabs('d:/')) #判断是否为绝对路径 True
print(os.path.isdir('d:/')) #判断是否为目录 True
print(os.path.isfile('d:/')) #判断是否为文件 False
print(os.path.exists('d:/a.txt')) #判断文件是否存在 False
print(os.path.getsize('file.txt')) #返回文件大小:字节单位
print(os.path.abspath('file.txt')) #返回文件的绝对路径E:\untitled\File_IO\file.txt
print(os.path.dirname(r'E:\untitled\File_IO\file.txt')) #返回文件得路径E:\untitled\File_IO
print(os.path.getctime('file.txt')) #返回文件的创建时间 1572747327.5603807
print(os.path.getatime('file.txt')) #返回文件的最后访问时间 1572747327.5603807
print(os.path.getmtime('file.txt')) #返回文件的最后修改时间 1572747327.5663338
abs=os.path.abspath('file.txt')
print(abs) #返回文件的绝对路径E:\untitled\File_IO\file.txt
print(os.path.split(abs)) #对路径进行分隔,返回元组('E:\\untitled\\File_IO', 'file.txt')
print(os.path.splitext(abs)) #对路径以文件的后缀名进行分隔,返回元组('E:\\untitled\\File_IO\\file', '.txt')
print(os.path.join('aa','bb','cc')) #将其多个path连接起来组成一个路径
abspath()方法特别点注意:
当前脚本路径:
E:\untitled\File_IO\
print(os.path.abspath('音乐'))
结果:输出绝对路径,但使用的是当前脚本的绝对路径拼接上"音乐"
E:\untitled\File_IO\音乐
举例:
列出路径的所有.py文件
print('----------------方法一-------------------')
abs=os.getcwd()
file_list=os.listdir(abs)
# print(file_list)
for file in file_list:
file_tuple=os.path.splitext(file)
file_extra=file_tuple[1]
if file_extra == '.py':
print(file)
结果:
py01.py
py02.py
py03.py
py04.py
print('-----------------方法二------------------')
abs=os.getcwd()
file_list=os.listdir(abs)
for file in file_list:
if file.endswith('.py'):
print(file)
结果:
py01.py
py02.py
py03.py
py04.py
print('-----------------方法三:列表推导式-----------------')
file_list2=[filename for filename in os.listdir(os.getcwd()) if filename.endswith('.py')]
for file in file_list2:
print(file)
结果:
py01.py
py02.py
py03.py
py04.py
print('-----------------方法四:利用string.rfind(str)------------------')
abs=os.getcwd()
file_list=os.listdir(abs)
for file in file_list:
strIndex=file.rfind('.') #返回'.'在字符串file中的索引位置
filextra=file[strIndex+1:]
if filextra=='py':
print(file)
结果:
py01.py
py02.py
py03.py
py04.py
os.path.walk()
举例:
import os
def find_file(arg,dirname,files):
for file in files:
file_path=os.path.join(dirname,file)
if os.path.isfile(file_path):
print "find file:%s" %file_path
os.path.walk(r"C:\Users\Administrator\Desktop\4",find_file,())