os.path.isdir( ), os.path.isfile(),os.listdir( ), os.walk( )

参考网址:https://blog.csdn.net/xxn_723911/article/details/78795033

Python的os模块封装了操作系统的目录和文件操作,要注意这些函数有的在os模块中,有的在os.path模块中。

  在Python程序中如何操作目录和文件?有两种方法:

(1)操作系统提供的一些命令,只是简单地调用了操作系统提供的接口函数

(2)Python内置的os模块,也可以直接调用操作系统提供的接口函数

分类 方法、函数 作用
操作系统 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 directory

rmdir:remove directory

chdir:change directory

操作系统

os.name :操作系统类型,如果是nt,就是Windows系统;如果是posix,说明系统是Linux、Unix或Mac OS X

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"))


小结

1、路径分隔符,最好使用/, // , \\,尽量不用\,转义符也是这个符号,有时正常,有时运行错误

2、把两个路径合成一个时,不要自己直接拼写出目录路径,而要通过os.path.join( )函数,这样可以正确处理不同操作系统的路径分隔符。

在Linux/Unix/Mac下,os.path.join( )返回结果:part-1/part-2

在Windows下,os.path.join( )返回结果:part-1\part-2

3、同样的道理,拆分路径时,也不要直接去拆字符串,而要通过os.path.split( )函数

4、这些合并、拆分路径的函数,并不要求目录和文件要真实存在,它们只对字符串进行操作。


拆分路径

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:\照片 这个路径是否为目录或文件

 import  os
print('判断该路径是否为目录:',os.path.isdir('E:\照片'))
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( )方法:

返回指定的路径下包含的文件或文件夹的名字的列表,还可以返回文件夹中文件名列表

实例:路径下的文件列表

 Test_file:
file1:
test1.txt
test2.txt
test3.txt
file2:
test1.txt
test2.txt
test3.txt
test1.txt
test2.txt
test3.txt
 import os

 path = 'E:\Test_file'
for parent,dirnames,filenames in os.walk(path):
print(parent,dirnames,filenames)

运行结果:

下面代码可获得指定路径下的所有文件及文件夹下子文件的目录列表:

第一种:

 import os

 path = 'E:\Test_file'
for parent,dirnames,filenames in os.walk(path):
for filename in filenames:
print(os.path.join(parent,filename))

运行结果:

第二种:

 import os

 path = 'E:\Test_file'
for parent,dirnames,filenames in os.walk(path):
print('parent:',parent)
print('dirname:',dirnames)
print('filenames:',filenames)
print( ' ')

运行结果:

结论:

通过上面两种的运行结果,可以知道:

parent:指目录下所有文件及文件夹的名称列表

dirname:文件夹的名字

filenames:列出了路径下所有的文件名称列表

Python --判断路径是否为目录或文件的更多相关文章

  1. asp.net如何判断服务器上的目录或文件是否存在

    asp.net判断服务器上的目录或文件是否存在!(实例) // ======================================================= [判断文件是否存在] u ...

  2. python中os.walk浏览目录和文件

    #!/usr/bin/env python # 2.py # use UTF-8 # Python 3.3.0 # os.walk()的使用 import os # 枚举dirPath目录下的所有文件 ...

  3. 【Lua】关于遍历指定路径下所有目录及文件

    关于Lua中如何遍历指定文件路径下的所有文件,需要用到Lua的lfs库. 首先创建一个temp.lua文件,用编辑器打开: 要使用lfs库,首先需要把lfs库加载进来 require("lf ...

  4. Python实例31[批量对目录下文件重命名]

    经常会遇到下载的文件或电子书,名字中间都包含了一些网址信息,实际使用中由于名字太长不方便,下面的脚本使用正则表达式来对目录下的所有文件重命名:例如: 修改前:[大家网]Mac OS X for Uni ...

  5. python 判断路径是否存在

    import os os.path.exists(文件绝对路径)

  6. python递归删除目录本身以及目录下文件

    import os def local_rm(dirpath): if os.path.exists(dirpath): files = os.listdir(dirpath) for file in ...

  7. Python批量重命名指定目录下文件的两种方法

    #法一 import os path = "C://Python34//" for file in os.listdir(path): if os.path.isfile(os.p ...

  8. Python 读取目录、文件

    在读文件的时候往往需要遍历文件夹,python的os.path包含了很多文件.文件夹操作的方法.下面列出: os.path.abspath(path) #返回绝对路径 os.path.basename ...

  9. Python:目录和文件的操作模块os.path和OS常用方法

    1.目录和文件的操作模块os.path,在使用之前要先导入:import os.path.它主要有以下几个重要的功能函数: #!/user/bin/python #coding= utf-8 impo ...

随机推荐

  1. oracle修改审计功能

    oracle修改审计功能 如果没有关闭审计功能,审计日志文件默认保存在位置为$ORACLE_BASE/admin/$ORACLE_SID/adump/ 关闭审计:alter system set au ...

  2. C#中的as关键字

    你能进到这篇文章…… 首先你可能明白类似于 double num=0;int m=(int) num; 或者你明白 int m=209;String str=m.toString();或者说你甚至见过 ...

  3. [Atcoder SoundHound Contest 2018]E.+ Graph

    题面 Time limit : 2sec / Memory limit : 1024MB Score : 600 points Problem Statement-题目描述 Kenkoooo foun ...

  4. WTForms

    一.简单介绍flask中的wtforms WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证. 安装: pip3 install wtforms 用户登录简例: fr ...

  5. [转载非常好的文章]JLink+GDBServer调试S3C6410裸板的初始化代码 For OK6410开发板

    要调试裸板,有两种初始化方法,一个是用烧好的uboot初始化,再有就是直接用JLink+GDBServer初始化.代码参考了网上的资料,根据手头的OK6410开发板做了修改.整体代码如下: # Con ...

  6. Let'sEncrypt 免费通配符/泛域名SSL证书添加使用教程

    Let'sEncrypt 免费通配符/泛域名SSL证书添加使用教程 通配符证书一般还是比较贵的一般最便宜的通配符证书5.60美元一年,只不过Let'sEncrypt的有效期是3个月,对于一般用户来说基 ...

  7. Java的流

    Java中的流主要是用来读写文件的.只要明确你是读文件还是写文件就可以确定使用哪种流了.读:read   写:writer 1.读文件:filereader这个类,顾名思义就知道是读文件了. 2.写文 ...

  8. CentOS7操作Redis4.0

    单机安装 1. 从官网下载 redis-4.0.10.tar.gz 到本地,然后上传到VMware虚拟机上,存放地址随意. 2. 解压: tar -zxvf redis-4.0.10.tar.gz 3 ...

  9. Java笔记 #06# 自定义简易参数校验框架——EasyValidator

    索引 一.校验效果演示 二.校验器定义示例 定义一个最简单的校验器 正则校验器 三.EasyValidator的实现 四.更好的应用姿势——配合注解和面向切面 “参数校验”属于比较无聊但是又非常硬性的 ...

  10. [darknet]查看错误结果 sight of wrong

    import os import numpy import cv2 bad_label_file = open("bad_valid.list",'r') names = [] f ...