python用r,f 遍历文件的绝对路径

记录一下在处理数据中用到的方法,欢迎指正,如果对你有帮助那就再好不过啦!

某路径下有很多文件夹,这些文件夹内有名字格式类似的待处理文件:

python用r,f 遍历文件的绝对路径_第1张图片

例如RHU文件夹下的文件如下图,仅日期存在变化:

python用r,f 遍历文件的绝对路径_第2张图片

现在想用for循环分别读它们的路径,拿其中一个文件路径举例:

D:\BaiduNetdiskDownload\2010-2019全国地面气候日值数据\中国地面气候资料日值数据集(V3.0)-201001201912\2015-2019weather\RHU\SURF_CLI_CHN_MUL_DAY-RHU-13003-201501.TXT

其它文件仅有标红部分是和其它文件不一样的,所以我创建了一个字典来读取。

重点是我既想用 f 来进行遍历,又想取一个绝对路径,否则这个循环就不能正确读取文件路径了,所以尝试之后发现 rf 是可以合在一起用的!!!同时满足这两个要求。

如果文件非常多,也可以用os内的功能读取文件名进行遍历,因为我要有对应的输出文件所以采取了这一方式。

import pandas as pd
import os
import xlsxwriter

meteor_key = {'PRS':'SURF_CLI_CHN_MUL_DAY-PRS-10004-', 'TEM':'SURF_CLI_CHN_MUL_DAY-TEM-12001-',
              'RHU':'SURF_CLI_CHN_MUL_DAY-RHU-13003-', 'PRE':'SURF_CLI_CHN_MUL_DAY-PRE-13011-',
              'EVP':'SURF_CLI_CHN_MUL_DAY-EVP-13240-', 'WIN':'SURF_CLI_CHN_MUL_DAY-WIN-11002-',
              'SSD':'SURF_CLI_CHN_MUL_DAY-SSD-14032-'}

for key,value in meteor_key.items():
    path = f'D://BaiduNetdiskDownload//2010-2019全国地面气候日值数据//中国地面气候资料日值数据集(V3.0)-201001201912//2015-2019weather//{key}//'
    workbook = xlsxwriter.Workbook(rf'D:\BaiduNetdiskDownload\2010-2019全国地面气候日值数据\中国地面气候资料日值数据集(V3.0)-201001201912\2015-2019weather\{key}_2015-2019_stations.xlsx')  # 新建excel表

    for year in range(2015, 2020):
        worksheet = workbook.add_worksheet('%04.0f' % year)
        for month in range(1, 13):
            fn = value + '%04.0f' % year + '%02.0f' % month + '.TXT'
            if (os.path.exists(path + fn)):  # 判断一下是否存在该路径,成功的话即可进行下一步文件读取处理!
                data = pd.read_csv(path + fn, header=None, sep='\s+')
                stations = list(set(data.iloc[:, 0]))  # 将气象站的站号取出,并去除重复值
                headings = [str('%02.0f' % month) + '月']
                worksheet.write_row(0,month-1, headings)
                worksheet.write_column(1,month-1, stations)
            else:
                print('路径有错误或不存在!')

    workbook.close()

print('end')

你可能感兴趣的:(数据处理,python)