目录
23、文件
文件打开方式
|
打开文件时,若文件路径中有\t,\r等被当做制表符……的话,就不会按照正常路径打开,这种情况下,应使用原始字符串操作符,在路径前边加‘R'或’r'
file1 = open(r'C:\windows\temp\readme.txt', 'r')
文件对象方法
|
应用:分割文件内容
要求:
给一个文件,将文件中的对话进行分割并按以下规律保存起来。文件中每段对话之间用“=========”来分隔,最后将每个人的每段对话分别存在文件中,命名为boy_1.txt,boy_2.txt,boy_3.txt……,girl_1.txt,girl_2.txt,girl_3.txt……,
f=open('D:\\in.txt', encoding='UTF-8')
boy=[]
girl=[]
count=1
for eachline in f:
if eachline[:6] != "======":
#字符串分隔,将冒号前后进行分割
[role,spoken]=eachline.split(":",1) #此处注意,冒号在文本里便必须是英文的冒号,否则程序找不到无法分隔会报错
if role=='吕':
boy.append(spoken)
else:
girl.append(spoken)
else:
#遇到分隔符,将这段对话放入文件中,并对文件进行1,2,3顺序命名
file_name_boy="D:\\软件\\Vscode\\VsCode\\code\\小甲鱼\\boy_"+str(count)+".txt"
file_name_girl="D:\\软件\\Vscode\\VsCode\\code\\小甲鱼\\girl_"+str(count)+".txt"
boy_file=open(file_name_boy,'w')
girl_file=open(file_name_girl,'w')
boy_file.writelines(boy)
girl_file.writelines(girl)
count+=1
boy=[]
girl=[]
boy_file.close()
girl_file.close()
f.close()
封装函数来简化代码(可运行)
注意用变量代替文件名式的写法
def save(boy,girl,count):
file_name_boy="D:\\软件\\Vscode\\VsCode\\code\\小甲鱼\\boy_"+str(count)+".txt"
file_name_girl="D:\\软件\\Vscode\\VsCode\\code\\小甲鱼\\girl_"+str(count)+".txt"
boy_file=open(file_name_boy,'w')
girl_file=open(file_name_girl,'w')
boy_file.writelines(boy)
girl_file.writelines(girl)
def split_file(file_name):
f=open('D:\\'+file_name, encoding='UTF-8')
boy=[]
girl=[]
count=1
for eachline in f:
if eachline[:6] != "======":
#字符串分隔,将冒号前后进行分割
[role,spoken]=eachline.split(":",1) #此处注意,冒号在文本里便必须是英文的冒号,否则程序找不到无法分隔会报错
if role=='吕':
boy.append(spoken)
else:
girl.append(spoken)
else:
#遇到分隔符,将这段对话放入文件中,并对文件进行1,2,3顺序命名
save(boy,girl,count)
boy=[]
girl=[]
count+=1
save(boy,girl,count)
f.close()
split_file('in.txt')
24、模块:
模块是一个包含所有自己定义的函数和变量的文件,可以被别的程序所引用,从而使用该模块中的函数等功能。
安装模块:在cmd命令行输入”pip install 模块名“即可
OS模块:
os模块中关于文件/目录常用的函数
|
os.path模块中关于路径常用的函数
|
pickle模块
将数据永久存储在一个文件中
import pickle
#存储
my_list=[123,3.14,'ahhahh',['what']]
pickle_file=open('D:\\软件\\Vscode\\VsCode\\code\\小甲鱼\\my_list.pkl','wb')
pickle.dump(my_list,pickle_file) #将my_list中的内容“倒”入pickle
pickle_file.close()
#读取
pickle_file=open('D:\\软件\\Vscode\\VsCode\\code\\小甲鱼\\my_list.pkl','rb')
my_list2=pickle.load(pickle_file)
print(my_list2)
25、异常
标准异常总结
|
异常处理(非常类似于java的异常处理机制):
try-exception-finally语句
try:
检测范围
exception Exception[as reason]:
出现异常后如何处理
finally:
无论如何都会被执行的代码
一个例子
try:
int('abc')
sum=1+'1' #类型错误
f=open('wenjian.txt') #文件错误
except FileNotFoundError as reason:
print("文件出错"+reason)
except TypeError as reason:
print("类型出错"+reason)
except : #捕捉以上except中未提及的异常
print("出错啦")
如果想同时处理多个异常:
except (FileNotFoundError,TypeError):
print("出错"+reason)
raise语句:
用来解释异常
else语句
while-else搭配:
如果while中的语句全部执行完毕,没有中途跳出,才执行else中的语句
exception-else搭配:
如果try中的语句没有任何异常,else中的语句才执行
try:
int('123')
sum=1+'1'
except ValueError as reason:
print("值出错:"+str(reason))
except:
print("nono")
else:
print("没有错误")
with语句
可以简化try-exception-finally语句
try:
with open('data.txt','w') as f:
for eachline in f:
print(eachline)
except OSError as reason:
print("出错:"+str(reason))