python ——批量读取相同格式文件(多个文件夹/单个文件夹)---nc文件为例

简介: 在处理多个相同格式的文件时,python中的许多模块可以为我们提供很多遍历。比如,我们想读取一个文件夹下多个相同格式的文件时可以使用os模块,

在处理多个相同格式的文件时,python中的许多模块可以为我们提供很多遍历。

比如,我们想读取一个文件夹下多个相同格式的文件时

可以使用os模块,


import os


以下有几个常见用法:

1、os.path.abspath(path) #返回绝对路径

2、os.path.filename(path) #返回文件名

3、os.path.dirname(path) #返回文件路径

4、os.path.join(‘字符串1’,‘字符串2’,‘字符串3’,) #将目录和文件名合成一个路径,一般最后一个字符串为文件名,前面的字符串表示文件所在目录。

5、os.walk(path) #用来扫描某个指定目录下所包含的子目录和文件

6、os.listdir(path) #得到文件夹下的所有文件名称

对于单个文件夹下所有文件处理方式:


import os
path='E://pythonlearn//'  #设置存储路径
files= os.listdir(path) #得到文件夹下的所有文件名称
for file in files:  #按照顺序在 files 里面进行每一个文件的 数据名称 循环读取
    f = open(path+file,'r')   # 打开第一个文件
    #如果是其他文件,使用他的读取方法即可
    #如是nc文件,将上一行换成:f =nc.Dataset(file,'r') 即可
  #下面进行相关其他处理即可


但是在海洋数据处理过程中,我们常常遇到这样的情况:


一个文件夹包含多个子文件夹。


比如说我们下载得到的Argo数据存在多年数据,每年数据又存在12个月,每个月又存在多条数据。


这样又该如何处理呢?

这其实也涉及到字符串拼接的问题,以下举一个例子:

文件夹如下所示:

我们有三个以大洋命名的文件夹


20210419192527997.png


点开第一个后发现有一个文件夹写着2020,表示2020年的数据


20210419192807759.png


再次点开后有12个以月份命名的文件夹


20210419192842140.png


再次点开01月份的文件夹,里面包含多个数据:


20210419192919891.png


在这个一层套一层文件夹的过程中,就是我们算法需要实现的过程!


仔细观察,不难发现,我们的文件夹除了第一个是按照大洋的名称命名,里面的子文件夹都是按照年月日有规律的命名的,包括我们最终的文件也是!

这样看来,看过我这一篇博文的小伙伴们一定就有思路了!


python 批量处理nc文件-字符串拼接文件,有规律文件名


好了,废话不多说,上代码!

先导入模块,然后拼接字符串,最后放入循环中即可完美解决!


import calendar
file_path='G://argo//atlantic_ocean//' #文件路径
for year in range(2020,2021):
    for month in range(1,13):
          for day in range(1,calendar.monthrange(year,month)[1]+1):
          fn='%04.0f'%year+'\\'+'%02.0f'%month+\
          '\\'+'%04.0f'%year+'%02.0f'%month+'%02.0f'%day+'_prof.nc' 
            if(os.path.exists(file_path+fn)):#判断一下是否存在该路径,成功的话即可进行下一步文件读取处理!


非常perfect!!!

追问一下,如果是太平洋下面的数据呢?聪明的小伙伴们赶快尝试起来吧~


一个努力学习python的海洋小白  

水平有限,欢迎指正!!!                            

欢迎评论、收藏。


相关文章
|
28天前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
python知识点100篇系列(15)-加密python源代码为pyd文件
|
8天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
10天前
|
开发者 Python
Python中__init__.py文件的作用
`__init__.py`文件在Python包管理中扮演着重要角色,通过标识目录为包、初始化包、控制导入行为、支持递归包结构以及定义包的命名空间,`__init__.py`文件为组织和管理Python代码提供了强大支持。理解并正确使用 `__init__.py`文件,可以帮助开发者更好地组织代码,提高代码的可维护性和可读性。
13 2
|
26天前
|
Java Python
> python知识点100篇系列(19)-使用python下载文件的几种方式
【10月更文挑战第7天】本文介绍了使用Python下载文件的五种方法,包括使用requests、wget、线程池、urllib3和asyncio模块。每种方法适用于不同的场景,如单文件下载、多文件并发下载等,提供了丰富的选择。
|
27天前
|
数据安全/隐私保护 流计算 开发者
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。
|
1月前
|
JSON 数据格式 Python
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
这篇文章介绍了一个Python脚本,用于统计TXT或JSON文件中特定单词的出现次数。它包含两个函数,分别处理文本和JSON文件,并通过命令行参数接收文件路径、目标单词和文件格式。文章还提供了代码逻辑的解释和示例用法。
39 0
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
|
数据安全/隐私保护 Python
python批量修改SecureCRT会话密码
#利用python批量修改SecureCRT 会话密码 # -*- coding:utf-8 -*- import os,re def CRT_Path(path,*args,**kwargs):     for (dirpath, dirnames, filenames) in os.
1074 0
|
2天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
2天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。