第10章:读写文件与异常处理

第十章:文件与异常

 

10.1 读取文件常规方法:

with open('document\\.file.txt') as file_object:         #windows中用斜杠(\),linux或UNIX中使用反斜杠(/)

     concents = file_object.read()

     print(concents.rstrip())                            #去掉行尾的空格

注意:路径分为绝对路径和相对路径,windows系统中使用双斜杠(\\),书中所说的单斜杠(\)会报如下错误:

 

或者写成:

file_path = 'C:\\Users\\nees-pub\\document\\file.txt'        #这里用的是绝对路径,依然要用双斜杠

with open(file_path) as first_file:

     concents = first_file.read()

     print(concents.rstrip())

 

10.1.2 逐行读取文件:for line in ...

file_path = 'document\\file.txt'

with open(file_path) as first_file:

     for line in first_file:

          print(line.rstrip())

 

10.1.3 把各行存储到列表,一行当做一个元素,在用for ... in ...读取列表打印显示

file_path = 'document\\file.txt'

with open(file_path) as first_file:

     lines = first_file.readlines()

     print(lines)

for line in lines:

     print(line.rstrip())

 

10.2.1 写入文件

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

file_path = 'document\\file.txt'

with open(file_path,'w') as first_file: 

     first_file.write("I love you!")

'w'位三种写入模式中的一种,另外还有

'r':读取模式:只能读取文档,10.1读取文件的写法是省略了这个参数,也就是如果这个参数省略,则默认是r

'a':附加模式(追加模式,append),不清空文档,在行末添加写入

注意:w(写入模式)是覆盖写入,写入之前会把文件清空

例子:附加模式,file.txt位空文件

file_path = 'document\\file.txt'

with open(file_path,'a') as first_file:

     first_file.write("I love you!\n")

with open(file_path) as file_project:

     print(file_project.read())

第一次执行:

    

第二次执行:

    

第三次执行:

    

 

10.3.2 异常处理

try:

     代码块

except 异常1:

     异常1的解决办法

except 异常2:

     异常2的解决办法

except Exception:

     剩余的其他异常解决办法

注意:如果想要程序遇见异常依然继续执行,还保持沉默,就用 pass 代替 异常的解决方法

注意:如果异常1和异常2的解决方式一样,则可以写在一个except里,例子如下:

try:

     代码块

except (异常1,异常2):

     异常1和异常2共同的的解决办法

 

代码如下:如果已有json文件,但文件为空,则10.4.2 保存和读取用户生成的数据运行就会报如下错:

import json

# 如果以前存储了用户名,就加载它

# 否则,就提示用户输入用户名并存储它

filename = 'username.json'

try:

     with open(filename) as f_read:

          username = json.load(f_read)

except (ValueError,FileNotFoundError):

     username = input("What's your name?")

     with open(filename,'w') as f_write:

          json.dump(username,f_write)

          print("We'll remember you when you come back, " + username + "!")

else:

     print("Welcome back, " + username + "!")

 

常见异常:

     ZeroDivisionError  :被除数不能为0

     ValueError:值错误,比如输入值的类型错误

     FileNotFoundError :未找到文件

 

10.4 json.dump()和json.load()

json.dump():把数据存储在json文件里

json.load():把数据文件加载到内存里

import json

number = [2,3,5,7,1,13]

filename = 'number.json'

with open(filename,'w') as f_obj:

     json.dump(number,f_obj)

with open(filename) as f_c:

     concents = json.load(f_c)

print(concents)

 

10.4.2 保存和读取用户生成的数据

import json

# 如果以前存储了用户名,就加载它

# 否则,就提示用户输入用户名并存储它

filename = 'username.json'

try:

     with open(filename) as f_read:

          username = json.load(f_read)

except FileNotFoundError:

     username = input("What's your name?")

     with open(filename,'w') as f_write:

          json.dump(username,f_write)

          print("We'll remember you when you come back, " + username + "!")

else:

     print("Welcome back, " + username + "!")

 

10.4.3 文档字符串和注释的区别

文档字符串可以被程序读取打印,用 三引号" 包括起来

注释只起到解释说明的作用,前面是 # 做前缀(单行注释),或者用 三引号" 包括起来,如"""注释"""(多行注释)

读取文档字符串:

#定义一个带有文档字符串的简单函数

def print__hello():

    """this funtion is to print hello """

    print("hello")

#下面我们来调用并输出文档字符串

print(print__hello.__doc__)

 

拓展:编码声明注释

# -*- coding:编码 -*-

或者

# coding=编码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值