• [Python日记-4] 文件-异常-json-测试


      今天学习了一些之前没有接触过的内容(之前太浅尝辄止了),关于应用层面的一些应用,总结下。


    1. 读取文件

    # 读取内容
    with open('file_name.xxx') as file_obj:
        contents = file_obj.read()
        # 文件内容全部储存在contents中,如果是多行文件,则可通过对contents列表的操作,进行读取
        print(contents)

      关键字with在不需要访问文件后将其关闭,不需要显式地使用close()语句。

    相对文件路径让Python到指定的位置去查找,而该位置是相对于当前运行的程序所在目录的。

    • Linux中使用斜杠(/)在文件路径中
    • Windows在文件路径中使用反斜杠()
    • 由于反斜杠在Python中被视为转义标记,为在Windows中确保万无一失,应以原始字符串的方式指定路径,即在开头的单引号前加上r。

    绝对路径,提供完整路径,在相对路径不可用时使用。

    使用关键字with时,open()返回的文件对象只在with代码块内可用,如果要在with代码块外访问文件的内容,可在with代码块内将文件的隔行储存在一个列表中,并在with代码块外使用该列表。

    filename = 'pi_digits.txt'
    with open(filename) as file_obj:
        lines = file.obj.readlines()
    for line in lines:
        print(line.rstrip)

    可使用方法replace()将字符串中的特定单词都替换为另一个单词。下面是一个简单的示例。

    message = "I really like dogs"
    message.replace(''dog,'cat')
    
    #输出
    'I really like cats.'

    2. 写入文件

    要将文本写入文件,需要在调用open()时传入一个实参:

    filename = 'Programming.txt'
    with open(filename, 'w') as file_obj:
        file_obj.write('I love programming.')  #要让每个字符串都单独占一行,需要在write()语句中包含换行符

    打开文件的模式有很多

    • 读取模式(‘r’)
    • 写入模式(‘w’)
    • 附加模式(‘a’)
    • 读取写入模式(‘r+’)

    如果省略模式实参,Python将以默认的只读模式打开文件。

    使用写入模式(‘w’)打开文件时,如果文件不存在,函数open()会自动创建;且如果指定文件已存在,Python将在返回文件对象前清空该文件。

    Python只能将字符串写入文本文件。要将数值数据存储到文本文件中,必须先使用函数str()将其转换为字符串格式。

    附加模式(‘a’)用以向文件追加内容而不会覆盖原有内容。


    3. 异常

    Python中使用try-except代码块来处理程序过程中出现的各种错误和异常,用以包装好的处理方式,代替原始的traceback。

    #try-except代码块的基本格式
    try:
        #运行过程中可能存在错误的代码
    except Error_code:
        #存在Error_code的异常时的处理措施
        #有点像case,可以有多个Error_code
    else:
        #try块代码正常运行时执行的操作

    常见的Error_code:

    • ValueError :尝试将输入转换为整数时引发。
    • FileNotFoundError:Python找不到要打开的文件时创建的异常。
    • ZeroDivisionError:因除0错误而失败。

    Pass语句在代码中的作用是Python什么都不做,充当占位符。


    4. Json存储数据

    Json数据的读取使用两个方法:

    • json.dump()
    • json.load()

    函数json.dump()接受两个实参:1. 要存储的数据。2. 可用于存储数据的文件对象。

    import json
    numbers = [2, 3, 5, 6, 11, 13]
    filename = 'numbers.json'
    with open(filename, 'w') as f_obj:
        json.dump(numbers, f_obj)

    函数json.load()只需传递用于存储数据的文件对象作为实参。

    下面举一个存取和载入数据的例子,同时包括异常的处理。

    import json
    def greet_user():
        """问候用户,并指出其名字"""
        filename = 'username.json'
        try:
            with open(filename) as f_obj:
                username = json.load(f_obj)
        except FileNotFounError:
                username = input("What is your name? ")
                with open(filename, 'w') as f_obj:
                    json.dump(username, f_obj)
                    print("We'll remember you when you come back, "+username+"!")
        else:
            print("Welcome back, "+username+"!")
    
    greet_user()

    5. 测试代码

    开发还没搞透,测试这块暂时无感,先做完三个项目,再做一做测试,留个小尾巴。完结撒花。


    6. 小结

    今天是封城的不知道第多少天。虽然不是重疫区,但是武汉这场疫情确实让这个这段日子多少有些不方便。今早刚和父亲戴着口罩步行去超市买了菜,怎么说,平淡生活来之不易,且行且珍惜吧。武汉加油!

    也慢慢明白一个道理,总是在等一个最好的环境,最好的心态,最好的时机。其实最好的时机一直在,总是要被繁琐的闲事打断,才知道有空思考的不易。

    另外,总是想融入一些环境,一些圈子,进不去,还浪费自己的时间。不属于自己的就算了,反正INTJ-T的人数本来就少,找到其他的2%,把通往自由的路照亮吧!(中二...)

    持续学习Python的第四天了,今天学的有点轻松,偏“架构”,思想上的东西。明天终于可以做项目了,搓手手。加油。

  • 相关阅读:
    【CH 5501】环路运输【DP】【单调队列】
    【CH 5501】环路运输【DP】【单调队列】
    【POJ 1456】Supermarket【并查集】
    【POJ 1456】Supermarket【并查集】
    【POJ 1456】Supermarket【并查集】
    【POJ 2411】Mondriaan's Dream【DP】
    数据结构实验之二叉树二:遍历二叉树
    数据结构实验之二叉树二:遍历二叉树
    36 静态数据成员与静态成员函数
    36 静态数据成员与静态成员函数
  • 原文地址:https://www.cnblogs.com/vilogy/p/12289037.html
Copyright © 2020-2023  润新知