os.path.isdir( ), os.path.isfile(),os.listdir( ), os.walk( )python
参考网址:https://blog.csdn.net/xxn_723911/article/details/78795033函数
Python的os
模块封装了操做系统的目录和文件操做,要注意这些函数有的在os
模块中,有的在os.path
模块中。spa
在Python程序中如何操做目录和文件?有两种方法:操作系统
(1)操做系统提供的一些命令,只是简单地调用了操做系统提供的接口函数.net
(2)Python内置的os模块,也能够直接调用操做系统提供的接口函数3d
分类 | 方法、函数 | 做用 |
操做系统 | os.name | 查看操做系统类型 |
os.uname()函数 | 操做系统详细信息 | |
环境变量 | os.environ | 环境变量 |
os.environ.get('key') | 某个环境变量的值 | |
操做文件、目录 | os.getcwd() | 获取当前目录 |
os.listdir( ) | 目录列表 | |
os.mkdir() | 建立文件、目录 | |
os.rmdir() | 删除文件、目录 | |
os.chdir() | 改变默认目录 | |
shutil.copyfile() | 复制文件 | |
文件重命名、删除 | os.rename() | 文件重命名 |
os.remove() | 文件删除 | |
os.path模块 | os.path.abspath() | 绝对路径 |
os.path.join() | 重组路径 | |
os.path下拆分路径 | os.path.split() | 拆分路径 |
os.path.splitext() | 拆分路径的扩展名 | |
os.path下判断函数 | os.path.isdir() | 判断目录 |
os.path.isfile() | 判断文件 |
mkdir:make directorycode
rmdir:remove directoryblog
chdir:change directory接口
操做系统
os.name :操做系统类型,若是是nt,就是Windows系统;若是是posix,说明系统是Linux、Unix或Mac OS Xrem
os.uname( )函数:获取详细的系统信息。
注意:uname( )函数在Windows上不提供,即,os模块的某些函数是跟操做系统相关的。
环境变量
os.environ:操做系统中定义的环境变量,所有保存在os.environ这个变量中。能够看作是一个字典dict,
os.environ.get( ' key ' ):获取某个环境变量的值(可看作,字典dict中根据key值获取对应的value值),注意:key要用引号引发来
import os print(os.name) print(os.uname)
操做文件和目录
操做文件和目录的函数,一部分放在os模块中,一部分放在os.path模块中,这点须要注意。
os.getcwd方法:获取当前目录
import os os.getcwd()
os.listdir( )方法:获取目录列表,即返回指定的路径下包含的文件或文件夹的名字的列表。只支持在Unix、Windows系统使用。
例如,获取当前路径下的子目录列表
import os os.listdir("./")
os.mkdir方法:建立文件、目录
import os os.mkdir("张三")
os.rmdir方法:删除文件夹、目录
例如,删除当前路径下的“张三”目录
import os os.rmdir("张三")
os.chdir方法:改变默认目录
例如,将当前目录改编为上一级目录
import os os.chdir("../")
复制文件:shutil模块的copyfile( )函数
os模块中没有复制文件的函数,缘由是:复制文件并不是由操做系统提供的系统调用。理论上,经过读写文件能够完成文件复制,只不过要多写不少代码。
shutil模块提供了copyfile( )函数,还能够在shutil模块中找到不少实用函数,能够看作是os模块的补充。
文件的重命名和删除
os.rename( src, dst ) :src:须要修改的文件名, dst :修改后的新文件名
os.remove( path ):path:指定路径下的文件
import os os.rename("毕业论文.txt","毕业论文-最终版.txt") os.remove("毕业论文.txt")
os.path模块
os.path.abspath(' . '):查看当前目录的绝对路径
os.path.join(path, 新目录名 ):把建立目录以后的最终目录路径效果表示出来,而后建立目录路径和删除目录路径时,把这个最终效果当作参数便可
os.mkdir(path):能够在path路径中查看建立的新目录
import os #路径中的目录等级是用/,//,\\,不能使用\,这个表示转义符 print("下面四句是相互有联系的") print(os.path.abspath("."))#查看当前目录的绝对路径 # 在某个目录下建立一个新目录,首先把新目录的完整路径表示出来: #这个例子是在上面一句的绝对路径下,建立新的目录,这个join的意思是,先把建立新目录以后的最终目录路径效果表示出来 print(os.path.join("F:\Program\python_pycharm",'testdir')) #建立目录,make directory print(os.mkdir("F:/Program/python_pycharm/testdir")) #删除目录,remove directory print(os.rmdir("F:/Program/python_pycharm/testdir"))
小结
一、路径分隔符,最好使用/, // , \\,尽可能不用\,转义符也是这个符号,有时正常,有时运行错误
二、把两个路径合成一个时,不要本身直接拼写出目录路径,而要经过os.path.join( )函数,这样能够正确处理不一样操做系统的路径分隔符。
在Linux/Unix/Mac下,os.path.join( )返回结果:part-1/part-2
在Windows下,os.path.join( )返回结果:part-1\part-2
三、一样的道理,拆分路径时,也不要直接去拆字符串,而要经过os.path.split( )函数
四、这些合并、拆分路径的函数,并不要求目录和文件要真实存在,它们只对字符串进行操做。
拆分路径
os.path.split( ):能够把一个路径拆分为两部分,后一部分老是最后级别的目录或文件名
os.path.splitext( ):用来获取文件扩展名,即文件后缀名
print(os.path.split("E:\Test\testdir\悯农.txt")) print(os.path.splitext("E:\\Test\\悯农.txt"))
判断目录、文件
os.path.isdir( ) 函数:判断某一路径是否为目录
os.path.isdir(path)
os.path.isfile( ) 函数:判断某一路径是否为文件
os.path.isfile(path)
实例:判断E:\照片 这个路径是否为目录或文件
1 import os 2 print('判断该路径是否为目录:',os.path.isdir('E:\照片')) 3 print('判断该路径是否为文件:',os.path.isfile('E:\照片'))
实战:
如何利用Python的特性来过滤文件。
如,列出当前目录下的全部目录 & 列出全部的 .py 文件
#列出当前目录下的全部目录 s=[x for x in os.listdir('.') if os.path.isdir(x)] print("列出当前目录下的全部目录:",s) #列出全部的py文件 t=[x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1]=='.py'] print("列出全部的py文件:",t)
os.walk( )方法:
返回指定的路径下包含的文件或文件夹的名字的列表,还能够返回文件夹中文件名列表
实例:路径下的文件列表
1 Test_file: 2 file1: 3 test1.txt 4 test2.txt 5 test3.txt 6 file2: 7 test1.txt 8 test2.txt 9 test3.txt 10 test1.txt 11 test2.txt 12 test3.txt
1 import os 2 3 path = 'E:\Test_file' 4 for parent,dirnames,filenames in os.walk(path): 5 print(parent,dirnames,filenames)
运行结果:
下面代码可得到指定路径下的全部文件及文件夹下子文件的目录列表:
第一种:
1 import os 2 3 path = 'E:\Test_file' 4 for parent,dirnames,filenames in os.walk(path): 5 for filename in filenames: 6 print(os.path.join(parent,filename))
运行结果:
第二种:
1 import os 2 3 path = 'E:\Test_file' 4 for parent,dirnames,filenames in os.walk(path): 5 print('parent:',parent) 6 print('dirname:',dirnames) 7 print('filenames:',filenames) 8 print( ' ')
运行结果:
结论:
经过上面两种的运行结果,能够知道:
parent:指目录下全部文件及文件夹的名称列表
dirname:文件夹的名字
filenames:列出了路径下全部的文件名称列表