文件、异常

编码问题

'''
GBK 汉字编码 cp936 汉字2字节 windows默认
Unicode(utf-8) 国际通用编码 python默认 Linux默认
ASCLL mac默认的
'''

文件的输入输出

打开文件open函数
open(file,[option])
file 是要打开的文件,option是可选择的参数,常见有 mode 等

文件的打开模式

'''
r 只读模式,文件不存在时会报错。=>>FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'
w 写入模式,文件存在会清空之前的内容,文件不存在则会新建文件
x 写入模式,文件存在会报错,文件不存在则会新建文件。 FileExistsError: [Errno 17] File exists: 'test.txt'
a 追加写入模式,不清空之前的文件,直接将写入的内容添加到后面。
b 以二进制模式读写文件,wb,rb,ab。
+ 可读写模式,r+,w+,x+,a+,这几种模式还遵循了r,w,x,a的基本原则。
'''

文件的读取

f.read(size) #读取文件的内容,将文件的内容以字符串形式返回。
'''
size是可选的数值,指定字符串长度,如果没有指定size或者指定为负数,
就会读取并返回整个文件。当文件大小为当前机器内存两倍时就会产生问题,
反之就尽可能大的size读取和返回数据,如果到了文件末尾,会返回空字符串。
'''
f.readline() #从文件中读取单独一行。只返回一行
'''
字符串结尾会自动加上一个换行符\n,只有当文件最后没有以换行符结尾时,
这一操作才会被忽略,这样返回值就不会有混淆。如果返回空字符串,
表示到达率文件末尾,如果是空行,就会描述为\n,一个只有换行符的字符串。
'''
f.readlines() #一次读取所有,返回一个列表,列表的元素为文件行的内容。
'''
可以通过列表索引的方式将文件的每一行的内容输出。
可以通过for循环迭代输出每一行的信息。
'''

文件的写入

f.write() #将要写入的内容以字符串的形式通过write方法写入文件中。
f.writelines() #括号里必须是由字符串元素组成的序列。

保存和关闭

f.flush()
在读写模式下,当写完的数据想要读取出来时,要先缓存区的内容保存到文件当中。
f.close()
关闭文件。对一个已经关闭的文件进行操作会报错。
flush/close由内存写入文件

光标位置

f.tell() #返回光标在文件中的位置。
f.seek(offset,from) #常用 f.seek(0) 返回起始位置
在文件中移动文件指针,从from(0代表起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节。
常用 f.seek(0,0) 返回起始位置。 其他了解一下

查看文件信息

closed #查看文件是否已经关闭,返回布尔值。
mode #返回文件打开模式。
name #返回文件名。

with 形式打开文件,里面的语句执行完后会自动关闭文件
with open('文件名') as f:
f.read()
---------->----------->----------->----------->

异常语法

try:
  suite1 #测试语句块
except exception1:
  suite2 #如果测试语句suite1中发生exception1异常时执行
except (exception2,exception3):
  suite3 #如果测试语句suite1中发生元组中任意异常时执行
except exception4 as reason: #as把异常的原因赋值给reason
  suite4 #如果测试语句suite1发生exception4的异常时执行
except:
  suite5 #如果测试语句suite1发生异常在所列出的异常之外时执行
else:
  suite5 #如果测试语句块suite1中没有发生异常时执行
finally:
  suit6 #不管测试语句suite1中又没有发生异常都会执行
'''
注意:中间的except,else,finally都是可选的,但至少有一个,不然try就没有意义了,根据实际中的需求来选择。
所有错误类型都继承自BaseException
https://docs.python.org/3/library/exceptions.html#exception-hierarchy
'''
a % 2 =》NameError: name 'a' is not defined #报错,程序就不能继续运行下去了

try:
  a%2
except NameError:
  print('error')
except TypeError:
  print('你们找不到的错误交给我')
else:
  print('我这个代码没毛病')
finally:
  print('不管怎样都执行的语句')

raise 引发一个异常

在Python中,要想引发异常,最简单的形式就是输入关键字raise,后跟要引发的异常的名称
try:
  a = input('输入数字:')
  if a.isdigit():
    print(a)
  else:
    raise TypeError
except Exception:
    print('请你遵循游戏规则')

assert

assert 断言 测试代码
'''
测试表示式,其返回值为假,就会触发异常
'''
assert 1==1 #没有返回值
assert 1==2 #返回AssertionError
python assert断言是声明其布尔值必须为真的判定,如果发生异常就说明表达示为假。

作业

1.打开文件,修改内容,写入另一个文件。
把文件reform.txt中的名人名言改成“某某说:......”的形式,保存到另一个文件中。
'例:雨果说:大胆是取得进步所付出的代价。'


image.png
  1. 捕捉用户输入时异常,确保程序正常执行


    image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,781评论 0 38
  • 类变量与对象变量 (InitializingR2-D2)Greetings,my master call meR2...
    丘山Ivan阅读 414评论 0 1
  • 一、简介 Python最强大的结构之一就是它的异常处理能力,所有的标准异常都使用类来实现,都是基类Exceptio...
    随风化作雨阅读 3,068评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,647评论 18 139
  • 面对着光幕上的偌大版图,这就是‘小家伙’的疆域了。上面明显比往日的亮点应该少了许多,亚洲区域是因为还在凌晨,而美洲...
    羽秋wing阅读 317评论 0 1