Python IO编程:文件读写与异常处理

需积分: 9 0 下载量 171 浏览量 更新于2024-08-05 收藏 18KB MD 举报
"这篇资源主要介绍了Python中的IO编程,特别是关于文件读写的操作。内容涵盖了如何使用`open()`函数打开文件、文件读取模式、读取文件内容、以及处理可能出现的错误和文件关闭的方法。" 在Python中,IO编程是进行输入/输出操作的基础,而文件读写是最常见的IO操作之一。当我们要对文件进行读写时,首先要明白操作系统对文件的操作进行了抽象和保护,普通程序不能直接与磁盘交互,而是通过系统调用来完成。`open()`函数就是Python提供用于打开文件的内置函数。 1)读文件 在Python中,打开文件时,需要指定文件路径和模式。例如,使用`'r'`模式表示读取文件。如果文件不存在,`open()`会抛出`FileNotFoundError`异常。一旦文件成功打开,可以使用`read()`方法一次性读取文件的全部内容,返回的数据通常是字符串类型。例如: ```python f = open('/Users/michael/test.txt', 'r') content = f.read() ``` 在读取完成后,确保文件被正确关闭是非常重要的,因为不关闭文件可能会导致资源浪费和潜在的问题。关闭文件可以使用`close()`方法: ```python f.close() ``` 考虑到可能出现的错误,通常使用`try...finally`结构来确保文件在任何情况下都能被关闭,即使在读取过程中出现异常: ```python try: f = open('/path/to/file', 'r') print(f.read()) finally: if 'f' in locals(): # 检查文件对象是否已经创建 f.close() ``` 为简化这一过程,Python引入了`with`语句,它会在操作完成后自动调用`close()`: ```python with open('/path/to/file', 'r') as f: print(f.read()) ``` `with`语句提供了更好的异常处理机制,即使在`with`代码块内部发生异常,也会确保文件被正确关闭。 2)写文件 写文件则需要使用不同的模式,如`'w'`(写入,会覆盖原有内容)、`'a'`(追加,不会覆盖原有内容)等。写文件的基本操作如下: ```python with open('/path/to/file', 'w') as f: f.write('Hello, world!') ``` 这里,`write()`方法将字符串写入文件。 3)其他IO操作 除了基本的读写外,还有其他高级功能,如逐行读取(`readline()`或`for line in file:`迭代)、读取指定字节数(`read(size)`)、写入二进制数据(`open(..., 'wb')`)等。 Python的IO编程提供了丰富的功能,使得处理文件和数据变得简单而高效。正确地管理文件对象和处理可能出现的异常是保证程序健壮性的关键。

结合下面hive元数据信息,生成hive建表语句,并且加上comment,注意day是分区 dwd_weibo_crawl NULL appmarket_appinfo GN线应用市场 2021-01-07 15:07:29 apk 应用包名 string day string入库日期 org.apache.hadoop.hive.ql.io.orc.OrcSerde serialization.format 1 hdfs://DSbigdata/hiveDW/dwd_exten_crawl/appmarket_appinfo org.apache.hadoop.hive.ql.io.orc.OrcInputFormat org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat dwd_weibo_crawl NULL appmarket_appinfo GN线应用市场 2021-01-07 15:07:29 app_name 应用名称 string day string 入库日期 org.apache.hadoop.hive.ql.io.orc.OrcSerde serialization.format 1 hdfs://DSbigdata/hiveDW/dwd_exten_crawl/appmarket_appinfo org.apache.hadoop.hive.ql.io.orc.OrcInputFormat org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat dwd_weibo_crawl NULL appmarket_appinfo GN线应用市场 2021-01-07 15:07:29 app_url 平台详情页链接 string day string入库日期 org.apache.hadoop.hive.ql.io.orc.OrcSerde serialization.format 1 hdfs://DSbigdata/hiveDW/dwd_exten_crawl/appmarket_appinfo org.apache.hadoop.hive.ql.io.orc.OrcInputFormat org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat dwd_weibo_crawl NULL appmarket_appinfo GN线应用市场 2021-01-07 15:07:29 cate 应用所属分类 string day string入库日期 org.apache.hadoop.hive.ql.io.orc.OrcSerde serialization.format 1 hdfs://DSbigdata/hiveDW/dwd_exten_crawl/appmarket_appinfo org.apache.hadoop.hive.ql.io.orc.OrcInputFormat org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat dwd_weibo_crawl NULL appmarket_appinfo GN线应用市场 2021-01-07 15:07:29 other 其他 string day string 入库日期 org.apache.hadoop.hive.ql.io.orc.OrcSerde serialization.format 1 hdfs://DSbigdata/hiveDW/dwd_exten_crawl/appmarket_appinfo org.apache.hadoop.hive.ql.io.orc.OrcInputFormat org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat dwd_weibo_crawl NULL appmarket_appinfo GN线应用市场 2021-01-07 15:07:29 region 平台名称 string day stri

2023-06-10 上传