Python编程:从入门到实践 Day10

在老婆的鼓励和支持下,五一没有浪,在好好学习!哈哈。

第十章 文件与异常

这一章大体有3个内容:
1.学习处理文件,能让程序快速的分析大量数据;
2.学习处理错误和异常,能对可能出现的错误有所控制;
3.学习json模块,这个很强大,方便的实现了数据的存储。

1.从文件中读取数据

(1)打开文件

使用下面这条语句可以打开文件;
with open('file_name.txt') as file_object:
*:1.这条语句实现的是:
    open()打开'file_name.txt'文件,
    返回一个表示文件的对象file_object;
  2.共3个关键字:with 、 open 、 as ,不要漏了;
    使用with,可以让python在不需要访问文件后,自动将其关闭。
    这样可以不用使用close()来关闭文件了,
    这样的话,当程序出现bug,close()没有执行的时候,也不会出现数据丢失的情况。

(2)文件路径

前面学到的open()默认在当前文件夹内寻找对应的文件名,
如果没有找到,会报错:FileNotFoundError.
而很多时候文件并不是和主程序在同一个文件夹内,所以需要学习
“文件路径”

①相对路径:即从当前路径开始的路径

首先我们设定一个这样的文件结构
(不会在markdown里面画,我自己用画图工具画一个):

image.png

先以Windows为例,先假设程序文件在level_21中:
1.需要读取的文件在下一级目录:比如level_311
with open(r'level_311\file_name.txt') as file_object:
2.需要读取的文件在上一级目录:比如level_11
with open(r'..\file_name.txt') as file_object:
3.需要读取的文件在同级或者同级的下级:比如level_22
with open(r'..\level_22\file_name.txt') as file_object:
*:需要注意的:
(1)记住相对路径的定义:从当前路径开始的路径;
(2)使用“..”表示上一级目录,如果有多个上级,就多几次;
(3)Windows系统里面,有的时候会将反斜杠(\)当成转义字符,如果出现这样的情况,
就在文件名的字符串前面加字母r,如上面的示例。
(4)Linux或者OS X中,
使用斜杠(/)表示下一级,使用(.)表示当前路径,使用(..)表示上一级目录。
②绝对路径:即从盘符开始的路径
1.Windows系统中,基本为:
'C:\Users\qianqian\Documents\python_test\file_name.txt'
2.Linux或者OS X中,基本为:
'/home/qianqian/python_test/file_name.txt'

(3)读取文件

大致有三种情况:

先打开一个文件,我们对打开的文件进行输出操作:
with open('file_name.txt') as file_object:
1.读取整个文件:
contents = file_object.read()
    print(contents)
=>这样就把整个文件都以字符串的形式存储在了contents 里面。
2.逐行读取:直接对生成的文件对象file_object使用for循环
for line in file_object:
    print(line)
3.将文件各行的内容存储在一个列表中:
lines = file_object.readlines()
=>这样就把文件的每一行的内容存储在lines字符串列表中,每个元素为一行的内容。
接下来就可以使用for循环遍历lines字符串列表进行输出。

需要注意的是:读取文件时,所有的文本都会默认为字符串。
如果其中有数字需要作为数值使用,需要转化格式。

2.写入文件

写入和读取很类似,简单的归纳一下:

语句:with open('file_name.txt', 'w') as file_object:
                 file_object.write("write something")
*:1.open()的第二个参数'w'表示写入模式,open()的第二个参数可以是:
    'r':读取模式:只读,如果文件不存在,会报错;
    'w':写入模式:如果文件不存在,会自动创建;
                 如果文件存在,会先清空文件再写入;
    'a':附加模式:如果文件不存在,会自动创建;
                 如果文件存在,会直接将内容接在文件后面;
    'r+':读写模式:可读可写,如果文件不存在,会报错;
                  如果文件存在,会先清空文件再写入;
  2.在不指定第二个参数时,默认为'r':读取模式。

3.异常

异常是一种特殊的对象,用来管理程序执行期间发生的错误。
常见的异常处理语句:

try:
    代码块1
except 异常类型a:
    代码块2
else:
    代码块3
*:1.代码块1如果顺利运行,会继续执行代码块3;
  2.代码块1如果出现异常类型a,会执行代码块2,而不执行代码块3;
  3.如果代码块1出现的异常不是异常类型a,表示没有“捕捉”到,那么还是会报错;
  4.如果想要捕捉多种异常,可以将多种异常类型用括号括起来放在except后面;
  5.如果想捕捉所有的异常,可以不指定异常类型,即except后面不跟参数;
  6.第5点的好处在于,可以保证程序运行,避免崩溃;
  7.如果想在异常被捕捉到以后不进行任何处理,可以将代码块2改写为 pass。

4.存储数据:json

使用json格式可以存储列表、字典等数据结构,且当前json格式应用很广泛,便于共享。

(1)使用json.dump()和json.load()

=>先导入json模块
import json

=>写一个需要导入文件的数据
numbers = [1,2,3,4,5,6,7]

=>再打开一个文件:
filename = 'file_name.json'
with open(filename , 'w') as file_object:

1.存储数据到json:
json.dump(numbers , file_object)
搞定!
2.读取json数据:
out_numbers = json.load(file_object)
搞定!

(2)重构

这本书真是用到什么讲什么,一下就说到了重构。
重构:就是将代码划分为一系列完成具体工作的函数的过程。
通过重构可以让代码更加清晰、易于理解、容易扩展。
所以在写完代码,能完成预定工作后,对代码进行重构是有好处的。

这一章就写到这里了,因为这一章的内容总是在文件之间搞过来搞过去,不是很方便用栗子来演示了,而且这章的内容也比较简单。
学到这里,整体的感觉到本书内容还是很基础的,很多内容都只是提高而已,不深入。需要学习的东西真的太多了。

你可能感兴趣的:(Python编程:从入门到实践 Day10)