Python-100-Days: Day11 Files and Exception

 

1.读取csv文件 

读取文本文件时,需要在使用open函数时指定好带路径的文件名(可以使用相对路径或绝对路径)并将文件模式设置为'r'(如果不指定,默认值也是'r'),然后通过encoding参数指定编码(如果不指定,默认值是None,那么在读取文件时使用的是操作系统默认的编码),如果不能保证保存文件时使用的编码方式与encoding参数指定的编码方式是一致的,那么就可能因无法解码字符而导致读取失败。下面的例子演示了如何读取一个纯文本文件。

 

"""
读取CSV文件

Version: 0.1
Author: Maxwell
Date: 2024-05-07
"""

import csv

filename = 'example.csv'

try:
    with open(filename) as f:
        reader = csv.reader(f)
        data = list(reader)
except FileNotFoundError:
    print('无法打开文件:', filename)
else:
    for item in data:
        print('%-30s%-20s%-10s' % (item[0], item[1], item[2]))
        

2.写入CSV文件

"""
写入CSV文件

Version: 0.1
Author: Maxwell
Date: 2024-05-07
"""

import csv

class Teacher(object):

    def __init__(self, name, age, title):
        self.__name = name
        self.__age = age
        self.__title = title
        self.__index = -1
    
    @property
    def name(self):
        return self.__name
    
    @property
    def age(self):
        return self.__age
    
    @property
    def title(self):
        return self.__title
    
filename = 'teacher.csv'
teachers = [Teacher('Max', 28, '老师'),Teacher('Maxwell', 26, '专家')]

try:
    with open(filename, 'w') as f:
        writer = csv.writer(f)
        for teacher in teachers:
            writer.writerow([teacher.name, teacher.age, teacher.title])
except BaseException as e:
    print('无法写入文件:', filename)
else:
    print('保存数据完成!')

3.异常机制——处理程序在运行时间可能发生的状态

"""
异常机制 - 处理程序在运行时可能发生的状态

Version: 0.1
Author: Maxwell
Date: 2024-05-07
"""

input_again = True
while input_again:
    try:
 
### 精密星历的数据格式与下载方法 精密星历通常用于高精度GNSS定位应用,其数据格式主要为SP3文件。这种文件包含了卫星的位置和钟差信息,适用于后处理分析[^1]。 #### SP3 文件简介 SP3 是一种广泛使用的精密星历数据格式,扩展名为 `.sp3` 或类似的变体(如 `.sp3.gz` 表示压缩后的 SP3 文件)。该文件记录了 GNSS 卫星在特定时间间隔内的位置坐标以及对应的时钟偏差信息。对于大多数用户而言,选择以 `.sp3` 结尾的文件即可满足需求。 #### 下载地址 以下是两个常用的精密星历下载站点: 1. **NASA CDDIS 数据库** NASA 的 CDDIS 提供全面的 GNSS 数据产品,其中包括精密星历。可以通过 FTP 地址访问并获取所需资源: ``` ftp://cddis.gsfc.nasa.gov/pub/gps/products/ ``` 用户需进入对应的时间目录(例如 `yyyy/ddd`,其中 yyyy 代表年份,ddd 代表一年中的第几天),找到所需的 SP3 文件进行下载[^2]。 2. **武汉大学 IGS 数据中心** 武汉大学提供了一个便捷的综合下载平台,支持导航数据和精密星历的同时获取。具体操作可以参考以下链接: [武汉大学IGS数据中心](http://gnsswhu.cn/) 对于指定日期范围(如 2024 年 6 月 12 日)的导航数据或精密星历,可以直接通过页面指引完成下载任务[^3]。 #### Python 脚本辅助批量下载 如果需要频繁下载多个时间段的精密星历,可编写脚本来实现自动化流程。下面是一个简单的 Python 示例代码片段,展示如何利用 `ftplib` 库从 NASA CDDIS 批量抓取 SP3 文件: ```python import ftplib from datetime import date, timedelta def download_sp3_files(year, start_day, end_day): ftp_server = 'cddis.gsfc.nasa.gov' username = 'anonymous' # 使用匿名登录 password = '' # 可为空字符串 with ftplib.FTP(ftp_server) as ftp: ftp.login(user=username, passwd=password) current_date = date.fromordinal(date(year=year, month=1, day=1).toordinal() + start_day - 1) while current_date.toordinal() <= date(year=year, month=1, day=1).toordinal() + end_day - 1: year_str = str(current_date.year) doy_str = f"{current_date.timetuple().tm_yday:03d}" remote_dir = f'/pub/gps/products/{doy_str}/{year_str}/' try: ftp.cwd(remote_dir) files = ftp.nlst() sp3_file = next((f for f in files if f.endswith('.sp3')), None) if sp3_file is not None: local_path = f'{sp3_file}' with open(local_path, 'wb') as file_handle: ftp.retrbinary(f'RETR {sp3_file}', file_handle.write) print(f'Downloaded {sp3_file}') except Exception as e: print(e) current_date += timedelta(days=1) download_sp3_files(2024, 163, 170) # 示例:下载 2024 年第 163 天到第 170 天的 SP3 文件 ``` 上述代码实现了基于给定年份及日序号区间自动检索并保存目标 SP3 文件的功能。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值