Python3.从csv文件解析MODIS数据的批量下载链接

Python3.从csv文件解析MODIS数据的批量下载链接

LAADS DAAC下载MODIS数据很痛苦,检索出的数据有好多页,要是有个批量下载的按钮就好了,但是这个网页上只有导出.csv或.json的选项,导出后还并不是直接的下载链接——这篇就是用Python的pandas来解决这个问题的。

代码如下:

# -*- coding: utf-8 -*-
"""
Created on Mon Jan 29 13:00:53 2018
要批量下载ladsweb.modaps.eosdis.nasa.gov上的数据前从cvs导出、合成下载链接
尝试PEP8风格
@author: 墨大宝
"""
import pandas as pd


def main(CSVPATH):
#    在cmd运行的Python中正常传入字符串,但是在Ipython控制台会多加一层单引号
    if CSVPATH.startswith("'"):
        CSVPATH = CSVPATH[1 : -1]
    TXTPATH = CSVPATH[:-4] + '导出.txt'
#    第2列是下载链接的部分,第1、3列无关
    links = pd.read_csv(CSVPATH, engine='python', usecols=[1],
                        header=None, skiprows=1)
#    links = links.values.tolist()
#    links= ['https://ladsweb.modaps.eosdis.nasa.gov' + y for x in links
#            for y in x]
    [links] = links.values.transpose().tolist()  # 比上一种方法简洁
#    补全下载链接
    links= ['https://ladsweb.modaps.eosdis.nasa.gov' + x for x in links]
    with open(TXTPATH, 'w') as txtFile:
        txtFile.write('\n'.join(links))
    print('\n\n完成!\n导出的下载链接文件与.csv同路径')


if __name__ == '__main__':
    print('\n**从cvs导出、合成ladsweb.modaps.eosdis.nasa.gov的下载链接**\n')
    CSVPATH = input('请将从ladsweb.modaps.eosdis.nasa.gov上导出的.csv文件' +
                    '拖拉至此(或者输入其绝对路径):\n')
    main(CSVPATH)
else:
    raise ImportError('滚滚滚!')

不得不承认,整个程序的思路其实很简单,就是提取出.csv文件的中间一列,简单处理后写入文本而已。所以这篇知识性的东西不多——但还是有的:

  • PEP8不建议在模块顶层赋值(小写的)变量,也不建议在函数中使用(大写的)常量,所以想严格按照PEP8的命名规范确实比较烦
  • 将脚本主体处理到main函数中后,再用Spyder运行程序,主体中的变量将不在Variable explorer中显示——我早该想到的。所以再综合上一条,PEP8的部分推荐规范在科学计算领域可能不是很合理
  • pd.read_csv()读成块的文本数据很方便,但是在这篇中优势不是很明显,不用pandas直接把.csv文件当作普通文本用.readlines()读完按照逗号分割估计也不算麻烦,那样还照顾到没装pandas的电脑——为啥这会儿才想起来啊啊啊——就当练习使用pd.read_csv()好了,这里面一些参数还是有说道的
  • pd.read_csv()中engine=’python’功能更全,engine=’c’更快——文档中是这么说的,反正我碰到过好多次engine=’c’不好使必须用engine=’python’的情况了

第一个相对比较完整、规范的Python3程序,纪念一下

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值