python基础教程之 文件和异常

本文即将讲述:读取文件、写入文件内容、异常ZeroDivisionError、try-except处理异常、FileNotFoundError、出错时不报错pass、json存储数据:json.dump()和json.load()

1.文件

1.1 读取文件

1.新建一个文件pi_digits.txt,内容是圆周率Π,放置在工作的文件夹内。
s

2.同一个文件夹内放置一个.py文件,代码如下:

with open('pi_digits.txt') as file_object:
    contents=file_object.read()
    print(contents)

运行结果:

3.1415926535
  8979323846
  2643383279
  

解析:open(文件名)打开文件,关键字with在不再需要访问文件后将其关闭。read()到达文件末尾时返回一个空字符串,也就是输出结果中的空行
要删除末尾的空行,可在print语句中使用rstrip()
print(contents.rstrip())

文件路径
(windows)
with open(‘text_files\filename.txt’)as file_object

例子

  with open('C:\Users\Athena\Desktop\pi_digits.txt')as file_object

mac和linux则把反斜杠换成斜杠

绝对路径,指定计算机具体位置。相对路径:所在文件夹内

1.2逐行读取

file_name='pi_digits.txt'
with open('pi_digits.txt')as file:
    for line in file:
        print(line)

结果

3.1415926535

  8979323846

  2643383279

好多空白行啊!原因在于文件每行末尾隐藏了换行符
同理rstrip()可以消除空白行

1.3创建关于文件各行内容的列表

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

readlines()读取每一行并且存储在一个列表里

1.4把文件内容转换成字符串

关键代码:
pi_string=‘’
for line in lines:
 pi_string+=line.strip()

filename='pi_digits.txt'
with open(filename)as file:
    lines=file.readlines()
    pi_string=''
    for line in lines:
        pi_string+=line.strip()
print(pi_string)
print(len(pi_string))

结果

3.141592653589793238462643383279
32

读取文本文件时,Python将其中的所有文本都解读为字符串。int() / float()转换成数值类型
只输出一部分:print(pi_string[:52])

1.5写入空文件

可指定读取模式(‘r’)、写入模式(‘w’)、附加模式(‘a’)
读取和写入文件的模式(‘r+’)
省略了模式实参,Python将以默认的只读模式打开文件

filename='s.txt'
with open(filename,'w')as file:
    file.write('hello')

在这里插入图片描述

2.异常

出现让python无法处理的错误就会创建一个异常对象

2.1ZeroDivisionError

除以0就会触发
size=3/0
ZeroDivisionError: division by zero

2.2 try-expect(else)处理异常

try:
    print(3/0)
except ZeroDivisionError:
    print('dividing by zero is wrong')

try代码块中代码运行没错,则跳过except代码块,如果出错,则查找except代码块并且运行其中的代码,提醒出错信息

如果try-except代码块后面还有其他代码,程序将接着运行
目的:不让traceback信息迷惑新手用户,也不让黑客通过traceback了解文件信息发起攻击,提高代码健壮性

else 负责try代码块成功执行后的代码。

try:
    answer=a/b
except ZeroDivisionError:
    print('dividing by zero is wrong')
else:
	 print(answer)

2.3FileNotFoundError

找不到文件(路径错误/文件不存在)

filename='Question.txt'
try:
    with open(filename)as file:
        contents=file.read()
except FileNotFoundError:
    msg='sorry,we can not find '+filename
    print(msg)

结果:

sorry,we can not find Question.txt

2.4出错时一声不吭pass

filename='Question.txt'
try:
    with open(filename)as file:
        contents=file.read()
except FileNotFoundError:
    pass

3.存储数据

JSON(JavaScript Object Notation)格式最初是为JavaScript开发的,但随后被包括Python在内的众多语言采用。

3.1 json.dump()和json.load()

json.dump(数据,存储所在文件名)
存储数据

例子:

import json
numbers=[1,2321,43,12,87,343]
filename='number.json'
with open(filename,'w')as file:
    json.dump(numbers,file)

visual studio查看json文件如下
在这里插入图片描述

json.load())将数据读取到内存

import json
filename='number.json'
with open(filename,'r')as file:
    num=json.load(file)
    print(num)

结果

[1, 2321, 43, 12, 87, 343]

重构
将代码划分为一系列完成具体工作的函数

  • 33
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值