专栏名称: VPointer
软件开发
目录
相关文章推荐
直播海南  ·  山西发生重大刑案,警方悬赏 ·  昨天  
直播海南  ·  担心随时被查,医院副院长患上抑郁症 ·  昨天  
人人都是产品经理  ·  AI时代的产品经理,都需要哪些硬性能力? ·  2 天前  
直播海南  ·  戴手套!戴手套!致死率或达100% ·  2 天前  
51好读  ›  专栏  ›  VPointer

Python学习之路9-文件和异常

VPointer  · 掘金  ·  · 2018-06-01 03:40

正文

Python学习之路9-文件和异常

《Python编程:从入门到实践》笔记。

本章主要是学习Python的文件操作,主要是从文件中读取数据以及将数据存储到文件中,还有错误处理,异常类,json模块等。

1. 从文件中读数据

1.1 读取整个文件

以下文件 pi_digits.txt 包含了精确到小数点后30位的圆周率数据

# pi_digits.txt文件
3.1415926535
  8979323846
  2643383279

# 代码:
with open("pi_digits.txt", "r") as file_object:
    contents = file_object.read()   # 一次性读取整个文件
    print(contents)

# 结果:和上述文件内容一样

从上述代码可以看出,我们打开文件使用 open() 函数,该函数至少接收一个参数,即文件路径。读取文件时需要向 open() 函数指明是用什么方式读取文件,是只读( "r" ),只写( "w" ),末尾添加( "a" )还是读写均可( "r+" ), open() 函数默认以“只读”方式读取文件。这只是4中常用的文件读取方式,此外还有至少8种读写方式。 open() 函数返回一个文件对象, file_object 用于接收该对象。通过文件对象的 read() 方法读取文件内容,且该方法返回整个文件的内容。

上述代码中的文件和源代码在同一目录中。注意文件路径的问题,绝对路径(不提倡)和相对路径(相对于源文件的路径)以及Windows和Linux下路径的写法。

注意代码中的 with 关键字。其实读写文件不需要该关键字,打开文件使用 open() 函数,文件读取完后关闭文件使用 close() 函数,读取内容可以调用 read() 方法。而之所以使用 with 关键字,主要是因为①你最后忘记关闭文件,就想忘了关灯一样;②也可能是在关闭前程序出错,导致 close() 语句未执行。这些让文件没有关闭的情况都有可能导致数据丢失或损坏。 with 关键字则被用来应对这些情况,它保证在结束 with 块时,文件一定会被关闭。

1.2 逐行读取

上述代码一次性读取整个文件,这在文件较小或者内存充裕的时候没有问题,但如果文件特别大,内存容量又很羞涩,则只能逐行读取:

# 代码:
file_name = "pi_digits.txt"

with open(file_name) as file_pi:
    for line in file_pi:  # 也可以通过while循环配合readline()方法逐行读取文件
        print(line)

# 结果:
3.1415926535

  8979323846

  2643383279

这里需要注意一个问题,就是对行以及文件末尾空字符的读取问题, read() readline() 方法会读取末尾的空字符(这里是换行符)。我们可以通过之前讲的 rstrip() 方法去掉末尾的空字符。

1.3 将文件每一行放入列表中

readlines() 方法将文件中每一行存入列表并返回,以下代码进一步处理文件中的内容:

# 代码:
file_name = "pi_digits.txt"

with open(file_name) as file_pi:
    lines = file_pi.readlines()

pi_string = ""
for line in lines:
    pi_string += line.strip()

print(pi_string)
print(len(pi_string))

# 结果:
3.141592653589793238462643383279
32

注意,Python从文件中读取出的所有内容都是字符串,如果你想要的是数字,请记得转换。

2. 写入文件

以下是一个简单的文件写入程序:

filename = "python.txt"






请到「今天看啥」查看全文