[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的第四天了,今天学的有点轻松,偏“架构”,思想上的东西。明天终于可以做项目了,搓手手。加油。

 

posted @ 2020-02-09 22:05  viLogy  阅读(96)  评论(0编辑  收藏  举报