文件,就是把一些数据存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力。
1.文件打开
在python中,使用open函数,可以打开一个已经存在的文件,或者简历一个新文件。
open(文件名,访问模式)
# demo:
f = open('test.text', 'w') #打开
f.close() #关闭文件
- 创建写的过程
#创建写的过程:
f = open('test.text', 'w')
f.writer('hello world!') #将字符串写入文件
f.close()
- 创建读的过程
#方法一 按字符读取
#.read方法,读取指定的字符,开始时定位在文件头部,每执行一次向后移动指定字符数。
f = open('test.text', 'r')
r.content = f.read(5) #表示读五个字节
print(r.content)
r.content = f.read(5) #表示在上面的五个字节基础上再往后读五个字节
print(r.content)
f.close()
# 方法二 多行读取
#readlines方法,一次性读取全部文件为列表,每行一个字符串元素
f = open('test.text', 'r')
content = f.readlines()
i = 1
for tep in content:
print(i, temp)
i = i +1
f.close()
# 方法三 单行读取
#.readline方法 只读取一行
f = open('test.text', 'r')
content = f.readline()
f.close()
错误与异常访问模式:
r:只读,文件指针会放在文件的开头,这是默认模式。
rb:以二进制格式打开一个文件用于只读,文件指针会放在文件的开头,这是默认模式。
w写的模式,文件不存在就新建
wb:以二进制格式打开一个文件用于写入,如果该文件已存在则将其覆盖,文件不存在,则创建新文件。
捕获异常
# demo:1发生异常:
print('test1')
f = open('test123.txt','r') #读取没有的文件会报错
print('test2') #上面的如果报错,那么这一条则显示不出来
# 2:捕获异常
try:
print('test1')
f = open('test123.txt','r') #读取没有的文件会报错
print('test2')
except (IDError, NameError): #捕获异常类型,也可以将所有产生的异常,都放进括号里
pass #捕获异常后执行的代码
# 获取错误信息
try:
print('test1')
f = open('test123.txt','r') #读取没有的文件会报错
print('test2')
print(mun)
except (IDError, NameError) as result:
print('some mistakes..')
print(result) #获取错误的类型
# 捕获所有异常
try:
print('test1')
f = open('test123.txt','r') #读取没有的文件会报错
print('test2')
print(mun)
except Exception as result: #不需要刻意去区分所有异常,exception捕获所有异常。
print('some mistakes..')
print(result)
try、finally 和嵌套
try:
print('test1')
f = open('test123.txt','r') #读取没有的文件会报错
print('test2')
print(mun)
except Exception as result: #不需要刻意去区分所有异常,exception捕获所有异常。
fially: #表示无论如何都要执行下面代码
print('some mistakes..')
print(result)
练习
1.应用文件操作的相关知识,通过python新建一个文件gushi.txt,选择一首古诗写入文件中
f = open('gushi.txt', 'w', encoding="utf-8") #encoding 防止乱码
content = f.writer("""
静夜思
李白
床前明月光,疑是地上霜。
举头望明月,低头思故乡。""")
f.close()
2.另外写一个函数,读取指定文件gushi.txt,并将内容复制到copy.txt,并在控制台输入‘复制完毕’。ps:分别定义两个函数,完成读文件和写文件的操作,尽可能完善代码,添加异常值处理。
try:
f = open("gushi.txt", "r", encoding="utf-8")
m = open("copy.txt", "w", encoding="utf-8")
try:
content = f.readlines()
for i in content:
m.write(i)
finally:
f.close()
m.close()
print('复制完毕')
except Exception as result:
print('出现错误')
print(result)



