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

在处理多个相同格式的文件时,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个月,每个月又存在多条数据。

这样又该如何处理呢?
这其实也涉及到字符串拼接的问题,以下举一个例子:
文件夹如下所示:
我们有三个以大洋命名的文件夹
在这里插入图片描述

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

再次点开后有12个以月份命名的文件夹
在这里插入图片描述
再次点开01月份的文件夹,里面包含多个数据:
在这里插入图片描述
在这个一层套一层文件夹的过程中,就是我们算法需要实现的过程!

仔细观察,不难发现,我们的文件夹除了第一个是按照大洋的名称命名,里面的子文件夹都是按照年月日有规律的命名的,包括我们最终的文件也是!
这样看来,看过我这一篇博文的小伙伴们一定就有思路了!

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的海洋小白
                            水平有限,欢迎指正!!!
                            欢迎评论、收藏。
  • 32
    点赞
  • 186
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
### 回答1: Python可以使用`os`和`glob`模块来批量读取多个文件夹文件。 首先,我们需要导入相应的模块: ```python import os import glob ``` 然后,我们可以使用`os`模块的`listdir`函数来列出文件夹的所有文件,例如: ```python folder_path = 'path/to/folder' file_names = os.listdir(folder_path) ``` 这将返回一个包含文件夹所有文件名称的列表。 接下来,我们可以使用`glob`模块的通配符来筛选出特定类型文件,例如: ```python csv_files = glob.glob(folder_path + '/*.csv') ``` 这将返回一个包含文件夹所有以`.csv`为结尾的文件路径的列表。 最后,我们可以使用循环来逐个读取文件,例如: ```python for csv_file in csv_files: with open(csv_file, 'r') as f: data = f.read() # do something with the data ``` 这将逐个读取`csv_files`列表的每个文件,并将文件内容存储在`data`变量。我们可以在循环编写代码来处理`data`变量的数据。 综上所述,使用`os`和`glob`模块可以轻松地批量读取多个文件夹文件。 ### 回答2: Python 是一种简洁易懂的编程语言,支持多种操作系统,其批量读取多个文件夹文件是一项重要的技能。在 Python ,我们可以使用不同的方法来读取多个文件夹文件。 方法一:使用 os.listdir() 函数 os.listdir() 函数可以帮助我们读取文件夹的所有文件,将文件名称存储在列表。在读取多个文件夹时,我们需要使用循环来遍历每个文件夹文件,将文件名称存储在不同的列表。 示例代码如下: ```python import os # 定义文件夹路径 folder_path = ['folder1', 'folder2', 'folder3'] # 循环遍历每个文件夹,将文件名称存储在不同的列表 for path in folder_path: file_list = os.listdir(path) print(file_list) ``` 方法二:使用 glob 函数 glob 函数是在 Python 3.5 版本引入的一个功能强大的文件搜索模块,它可以帮助我们快速搜索指定路径下的所有文件。使用 glob 函数可以更加简洁地读取多个文件夹文件。 示例代码如下: ```python import glob # 定义文件夹路径 folder_path = ['folder1', 'folder2', 'folder3'] # 循环遍历每个文件夹,将所有文件名称存储在同一个列表 file_list = [] for path in folder_path: file_list += glob.glob(path + '/*.*') print(file_list) ``` 方法三:使用 pathlib 库 pathlib 库是一个专门用于文件和路径操作的 Python 模块,它提供了一组更加面向对象的方法来访问和操作路径。在读取多个文件夹文件时,我们可以使用 pathlib 库提供的 glob() 方法来搜索指定路径下的所有文件。 示例代码如下: ```python import pathlib # 定义文件夹路径 folder_path = ['folder1', 'folder2', 'folder3'] # 使用 pathlib 库读取多个文件夹的所有文件 file_list = [] for path in folder_path: p = pathlib.Path(path) file_list += [str(x) for x in p.glob('*.*')] print(file_list) ``` 总结 以上三种方法都可以帮助我们有效地读取多个文件夹文件,可以根据自己的需求选择最合适的方法。需要注意的是,在读取大量文件时,应该考虑采用合适的算法和数据结构,以提高程序的性能和速度。 ### 回答3: Python使用os和os.path模块可以实现批量读取多个文件夹文件。 具体步骤如下: 1. 首先,需要导入os模块,通过该模块的函数可以实现对文件文件夹的操作。 2. 使用os.walk函数遍历指定根目录下的所有文件夹及其文件,该函数返回一个三元组,分别为当前文件夹、该文件夹下的所有文件夹和该文件夹下的所有文件。 3. 对于每个文件夹及其文件,可以使用os.path.join函数拼接成绝对路径,以便进行操作。 4. 判断文件是否为指定类型文件,可以使用字符串的.endswith方法。 下面是一个简单的批量读取多个文件夹指定类型文件的代码示例: ```python import os # 指定根目录及文件类型 rootdir = r'C:\test' file_type = '.txt' # 遍历指定根目录下的所有子文件夹文件 for parent, dirnames, filenames in os.walk(rootdir): for filename in filenames: # 拼接绝对路径 path = os.path.join(parent, filename) # 判断是否为指定类型文件 if path.endswith(file_type): # 对该文件进行处理 with open(path) as f: data = f.read() print(data) ``` 以上代码可以遍历C盘test文件夹下的所有txt文件,并对每个文件进行处理。 总的来说,Python文件文件夹的操作非常方便,通过组合使用os和os.path模块的函数,可以实现非常灵活的批量读取多个文件夹文件的功能。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简朴-ocean

继续进步

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值