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