文件与异常处理

1.文件处理

对于文件来说,通常的操作流程为:

√打开文件,创建对象

√读取文件内容,对内容进行写入/修改/删除等操作

√关闭文件

1.1 创建文件对象

Python中内置了文件对象。通过open()函数制定模式打开指定文件。

open(file[, mode=’r’[, buffering=-1]],encoding=[])

//常见用法:

参数的含义如下:

(1) 参数file指定要打开或者创建的文件名称,如果该文件不存在当前目录,则需要明确指出绝对路径。

(2) 参数mode指定打开文件后的处理方式,其中包括:读模式、写模式、追加模式、二进制模式、文本模式、读写模式等。(/rw/a/b)

(3) 参数buffering指定读写文件的缓冲模式,数值0表示不缓存,数值为1表示使用行缓存模式,大于1表示缓冲区的大小,默认值为-1,二进制文件和非交互文本文件以固定大小块为缓冲单位。

(4) 参数encoding指定对文本进行编码和解码的方式。

 

文件的读取

readable():文件是否可读

# readable() 可读返回True
fileRead = open('read.txt','r')
print(fileRead.readable())
​
>>>True

 

 

read(显示数,默认全部):

#中文和英文都算一个字符,换行也会算一个字符
fileRead = open('read.txt','r',encoding='utf-8')
print(fileRead.read())

 

readlines():

#readline()只能读一行。readlines
>['该文件可读\n', 'r\n', 'e\n', 'a\n', 'd\n', 'gogogogoogogo']
​
#或以循环方式读取整个文件
for line in fileRead:
    print(line)
 

 

1.2文件的写入

如果需要向文件中写入内容,在打开文件时就需要指定文件的打开模式为写模式,根据不同的开发需求选取

不同的写入模式:

w:写入模式,如果文件已经存在,先清空文件内容;如果文件不存在,则创建文件。

x:写入模式,创建新文件,如果文件已经存在则抛出异常

a:追加模式也是写入模式的一种,不覆盖文件的原始内容。

writable():文件是否可读

# readable() 可读返回True
fileRead = open('read.txt','r')
print(fileRead.writable())
​
>>>False
​
fileRead = open('read.txt','w/a')
print(fileRead.writable())
​
>>>True

 

 

write():写的内容

fileRead = open('read.txt','w/a')
fileRead.write('gello! \n')
fileread.close
>>>True

 

 

1.3 关闭文件对象

文件操作一般遵循“文件打开-》文件内容的读写-》文件的关闭”

file.close

保证了所作的任何修改确实保存到了文件之中

with

可以避免忘记了关闭文件的操作file.close

with open('test1.txt','r') as f:
    f.readline()
 

 

 

2. 异常处理结构

异常处理结构不仅能够提高代码的健壮性,而且也提高了代码的容错性,从而不会因为使用者错误输入造成系统崩溃,也可以通过异常处理结构为使用者提供更加友好的错误提示。在python开发过程中引发程序异常错误的原因有很多中,较为常见的有:除0、下标越界等。 Python中提供了很多不同形式的异常处理结构,其基本利用思路都是:先尝试执行代码,再进行处理可能发生的错误。

 

2.1try... except...结构

当try子句代码块执行异常并且被except子句捕获,则执行except子句的代码块。

mathScore = input('请输入数学成绩')
try:
    mathScore=int(mathScore)
    if(0<=mathScore<=100):
        print('输入的成绩为',mathScore)
    else:
        print('输入的成绩有误')
except Exception as e:
    print('输入的数据有误')

 

 

2.2 try...except...else结构

try…except…else…结构进行编写。如果try代码的子句出现了异常且该异常被except所捕获则可以执行相应的异常处理代码,此时就不会执行else中的子句;如果try中的代码没有抛出异常,则执行执行else子句代码块。


mathScore = input('Please insert mathScore:')
try:
    mathScore=int(mathScore)
#若不能转为int型则爆出异常。
except Exception as e:
    print('insert ERROR!')
​
else:
    if(0<=mathScore<=100):
        print('mathScore:',mathScore)
    else:
        print('Out of range.')

 

 

 

2.3 try...except...finally

在try…except…finally…结构中。无论try子代码块是否正常执行,finally子句中的代码块总是会得到执行。在日常开发过程中,通常用来做清理工作,用来释放try子句中申请的资源。无论是否异常总会执行finally中的语句。


a = int(input('a:'))
b = int(input('b:'))
try:
    div = a/b
    print(div)
except Exception as e:
    print('2th cant be 0')
finally:
    print('End!')

 

 

 

posted on 2020-07-04 07:35  Po1i  阅读(363)  评论(0)    收藏  举报