美文网首页
Python编程:从入门到实践 Day10

Python编程:从入门到实践 Day10

作者: 欠欠的小跟班 | 来源:发表于2018-04-30 17:55 被阅读0次

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

    第十章 文件与异常

    这一章大体有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

          本文链接:https://www.haomeiwen.com/subject/bogzlftx.html