os的文件操作

os.path()

os.path 常用方法:

import os

print(os.path.splitext('./data/large.wav'))            # 分离文件名和后缀名 ('./data/large', '.wav')
print(os.path.splitext('./data/large')) # 分离文件名和后缀名 ('./data/large', '')
print(os.path.split('/root/runoob.txt')) # 分割文件名与路径 ('/root', 'runoob.txt')
print(os.path.join('root','test','runoob.txt')) # 将目录和文件名合成一个路径 root/test/runoob.txt os.path.isdir('d:/books/book') # 判断某一路径是否为目录
os.path.isfile('d:/books/book/book.txt') # 判断某一路径是否为文件 os.path.exists(path) # 路径存在则返回True,路径不存在返回False
os.path.abspath(path) # 返回绝对路径

创建目录  os.mkdir(path)

其参数path为要创建的目录,但只能创建一级目录,不能创建多级目录。

os.mkdir(r"C:\Users\Never\Desktop\aa")  # 在桌面创建一个aa目录

删除目录  os.rmdir(path)

删除一级目录

os.rmdir('d:\hmm')     # 把D盘下的hmm的目录删除

创建多级目录  os.makedirs(path)

创建多级目录,其参数path 为要创建目录的路径。

os.makedirs(r"C:\Users\Never\Desktop\aa\bb")  # 在桌面创建一个aa目录,并在aa目录中创建bb目录

删除多级目录  os.removedirs(path)

删除多级目录,注意:要删除的目录必须是空目录,即目录没有文件

os.removedirs('d:\\books\\book')    # 注意:要删除的目录必须是空目录

删除文件  os.remove(path)

os.remove('d:\\books\\book\\book.txt')    # 删除D盘下books目录下book目录中的book.txt的文件

遍历目录  os.walk(path)

其参数path 为要遍历的目录,返回一个三元素的元组 (root,dirs,files)

  • root 所指的是当前正在遍历的这个文件夹的本身的地址
  • dirs 是一个 list ,内容是该文件夹中所有的文件夹的名字
  • files 同样是 list , 内容是该文件夹中所有的文件

如果我们有如下的文件结构:

for (root, dirs, files) in os.walk('a'):
# 当前要遍历的根目录为 a
所以 root == 'a'
dirs == [ 'b', 'c', 'd']
files == [ '4.txt', '5.txt'] # ------ 接着遍历 dirs 中的每一个目录 ------ #
### 遍历 b
b: root = 'a\\b' # 要遍历的目录 b
dirs = [] # 遍历目录中的文件夹
files = [ '1.txt', '2.txt'] # 遍历目录中的文件 # dirs为空,返回
### 遍历 c
c: root = 'a\\c' # 要遍历的目录 c
dirs = [] # 遍历目录中的文件夹
files = [ '3.txt' ] # 遍历目录中的文件 PS : 如果想获取文件的全路径,只需要
for f in files:
path = os.path.join(root,f) ### 遍历 d
d: root = 'a\\b' # 要遍历的目录 d
dirs = [] # 遍历目录中的文件夹
files = [] # 遍历目录中的文件 # 遍历完毕,退出循环

综合使用

列出一个文件夹中的所有音频文件,把文件名存储到列表中,这段代码经常会用到

wav_list = []
for root, dirnames, filenames in os.walk("./VCTK/p225"):
for filename in fnmatch.filter(filenames, "*.wav"): # 实现列表特殊字符的过滤或筛选,返回符合匹配“.wav”字符列表
wav_list.append(os.path.join(root, filename))
print(wav_list)
# ['./VCTK/p225\\p225_001.wav', '/VCTK/p225\\p225_002.wav',...

glob模块

  glob是python自己带的一个文件操作相关模块,用它可以查找符合自己目的的文件,就类似于Windows下的文件搜索,

支持通配符操作   [ ]   这三个通配符,代表0个或多个字符,代表一个字符,[ ] 匹配指定范围内的字符,如[0-9]匹配数字。

glob.glob("字符串+通配符")

该方法返回指定路径所有匹配的文件的列表,该方法需要一个参数用来指定匹配的路径字符串(本字符串可以为绝对路径也可以为相对路径),其返回的文件名只包括当前目录里的文件名,不包括子文件夹里的文件。

glob.glob(r'c:\*.txt')      我这里就是获得C盘下的所有txt文件

glob.glob(r'E:\pic\*\*.jpg')  获得指定目录下的所有jpg文件

glob.glob(r'../*.py')      上一层路径下的所有.py文件

fnmatch模块

此模块的主要作用是文件名称的匹配,fnmatch有2个比较常用的方法:fnmatchfilter

字符 含义
* 匹配所有字符
匹配单个字符
[seq] 匹配指定范围内的字符
[!seq] 匹配不在指定范围内的字符

fnmatch.fnmatch(filename, patten)  测试filename,是否符合pattern

import fnmatch
import os
for file in os.listdir('.'): #os.listdir返回指定的文件夹包含的文件或文件夹的名字的列表
if fnmatch.fnmatch(file, '*.py'): #判断是否有后缀为.py的文件,*代表文件名长度格式不限制。
print(file)

fnmatch.filter(names, pattern)    实现列表特殊字符的过滤或筛选,返回符合匹配模式的字符列表

import fnmatch
filelist=["a.text","b.jpg","c.png","d.py",'e.text',"sss.py"]
print(fnmatch.filter(filelist,"?.py")) # 匹配前面是一个字符的.py文件
# 输出:d.py

python文件及路径管理函数的更多相关文章

  1. python 文件和路径操作函数小结

    1: os.listdir(path) //path为目录 功能相当于在path目录下执行dir命令,返回为list类型 print os.listdir('..') 2: os.path.walk( ...

  2. [转载]《Delphi 版 everything、光速搜索代码》 关于获取文件全路径 GetFullFileName 函数的优化

    Delphi 版 everything.光速搜索代码>,文章中关于获取文件全路径的函数:GetFullFileName,有一个地方值得优化. 就是有多个文件,它们可能属于同一个目录. 譬如 Sy ...

  3. python文件的路径问题补充上一篇内容

    上次的路径问题还没解决就被勒索病毒的木马器给搞了两周多, 拖拖拖到现在又开始纠结路径问题...还是学习能力不足啊... 补充一下路径问题的知识, 毕竟jupyter notebook跟IDE测试的时候 ...

  4. python文件之间变量和函数的 获取/调用 的方法

  5. IOS获得各种文档文件夹路径的方法

    iphone沙箱模型的有四个目录,各自是什么,永久数据存储一般放在什么位置.得到模拟器的路径的简单方式是什么. documents,tmp.app,Library. (NSHomeDirectory( ...

  6. C++获取文件夹下所有文件的路径

    代码 getFiles()函数的作用: path是一个文件夹路径,函数在path文件夹下寻找所有文件(包括子文件夹下的文件),然后将所有文件的路径存入files #include <io.h&g ...

  7. Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块

    Python第五天   文件访问    for循环访问文件    while循环访问文件   字符串的startswith函数和split函数  linecache模块 目录 Pycharm使用技巧( ...

  8. python基础:os模块中关于文件/目录常用的函数使用方法

    Python是跨平台的语言,也即是说同样的源代码在不同的操作系统不需要修改就可以同样实现 因此Python的作者就倒腾了OS模块这么一个玩意儿出来,有了OS模块,我们不需要关心什么操作系统下使用什么模 ...

  9. Python os模块--路径、文件、系统命令等操作

    os模块包含普遍的操作系统功能. 注意:函数参数path是文件或目录的路径,filename是文件的路径,dirname是目录的路径,路径可以是相对路径,也可绝对路径 常见或重要的函数为加粗字体 os ...

随机推荐

  1. WPF--动态添加控件、访问控件

    //WPF窗口采用默认的Grid布局控件,其“Name”值为“grid1”,在“grid1”中添加三个Button按钮.动态添加控件并访问这些控件的代码如下: private void button1 ...

  2. Dx bad class file magic (cafebabe) or version (0033.0000) ant打包遇到问题2

    在进行ant进行打包时会发现下面的提示话语言 后来在网上搜索答案,问题得以解决,下面是传送门 门:http://blog.k-res.net/archives/1501.html 里面提到问题的原因是 ...

  3. 计时器timer的使用

    https://www.cnblogs.com/ILoveSleep/archive/2013/06/12/3133322.html

  4. WPF 3D Transparency Depth-Order Sorting

    原文:WPF 3D Transparency Depth-Order Sorting   Just a quick post here - When making WPF 3D apps, trans ...

  5. Matlab随笔之线性规划

    原文:Matlab随笔之线性规划   LP(Linear programming,线性规划)是一种优化方法,在优化问题中目标函数和约束函数均为向量变量的线性函数,LP问题可描述为:min xs.t. ...

  6. ESB (Enterprise Service Bus) 入门

    在本文中,ESB相关技术概念和术语.其他需要了解的入门的基础知识,并介绍了一些初步的了解ESB产品.因为它是一个新的ESB.将自己的学习内容与过程,记录下来! 愿在这里与大家分享一下,共同进步与提高! ...

  7. Angular升级流程

    执行命令 ng update @angular/cli --migrate-only --from=1.7.1 npm install --save-dev @angular/cli@latest 注 ...

  8. 利用花生壳对windows server进行远程桌面

    花生壳内网穿透 http://service.oray.com/question/1824.html windows server "允许远程协助连接这台计算机" 需要在服务器管理 ...

  9. WPF 创建无边框的圆角窗口

    原文:WPF 创建无边框的圆角窗口 如题所述,在WPF中要创建一个没有边框且为圆角的窗体,有如下几步工作要进行: 第一步:去掉窗体默认样式的边框 首先将窗体的背景设为透明,将允许透明的属性设置为Tru ...

  10. Git Bash Cmd命令笔记

    生成ssh公钥ssh-keygen -t rsa -C "xxxxx@xxxxx.com" # 三次回车即可生成 ssh key 查看你的public keycat ~/.ssh/ ...