学习主题:文件
学习日期:2020-02-09
Python 版本:3.7.4
学习的套路还是那个套路,得心应手了吧。
第28讲
1. 文件的定义
什么是文件?不说了,那简单了
2. 文件的方法
- 打开文件
>>> open('C:\Users\SNIPER\Desktop\testopen.txt','r')
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
报错了,好吧。这里让我回顾《学习笔记3》中的内容。
为什么会出错呢,因为反斜杠“\”是转义字符。
那么,如何保障这段字符串就是我们想要的呢。
那么就需要在每一个反斜杠后边再加一个反斜杠,这样手动添加太麻烦了,一个简便办法如下:
此时要请出原始字符串,只需要在字符串前面加入一个英文字母r即可。
>>> str1=r'C:\Users\SNIPER\Desktop\testopen.txt'
>>> str1
'C:\\Users\\SNIPER\\Desktop\\testopen.txt'
>>> print(str1)
C:\Users\SNIPER\Desktop\testopen.txt
>>>
这下就对了。
>>> str1=r'C:\Users\SNIPER\Desktop\testopen.txt'
>>> a=open(str1)
>>> a
<_io.TextIOWrapper name='C:\\Users\\SNIPER\\Desktop\\testopen.txt' mode='r' encoding='cp936'>
>>> type(a)
<class '_io.TextIOWrapper'>
#Wrapper直译是包装纸的意思
文件对象的方法
关闭文件 f.close()
读文件 f.read
指定位置 f.seek()
写文件 f.write()
关闭文件 f.close()
#写文件
>>> str1=r'C:\Users\SNIPER\Desktop\mydemo.txt'
>>> fid=open(str1,'w')
>>> fid.write('my first demo,this is my test ,hope the world better')
53
>>> fid.close()
#读文件
>>> fid=open(str1,'r')
>>> file=fid.read()
>>> file
'my first demo,this is my test ,hope the world better'
>>> fid.close()
第29讲
来,做一道应用题。
这里有一个文本:
要做什么呢?
将上面这个文件中的数据进行分割并按照以下规则保存。
- 甲方的对话单独保存为partA.txt文件
- 乙方的对话单独保存为partB.txt文件
- 有3段对话,分别要保存为:
partA_1.txt,partA_2.txt,partA_3.txt,
partB_1.txt,partB_2.txt,partB_3.txt,
-注: 文件中的3段对话已经用“====”分开
目标明确,开始干吧!!!
path_oritxt=r'C:\Users\SNIPER\Desktop\mydemo\TalkPartyAB.txt'
pathname=r'C:\Users\SNIPER\Desktop\mydemo'
f=open(path_oritxt,'r')
TalkpartA=[];
TalkpartB=[];
count=1
for eachline in f:
if eachline[:3]!='===':
(role,linetalk)=eachline.split(':',1)
if role=='甲方':
TalkpartA.append(linetalk)
else:
TalkpartB.append(linetalk)
else:
filename_TalkpartA=pathname+'\\TalkpartA_'+str(count)+'.txt'
filename_TalkpartB=pathname+'\\TalkpartB_'+str(count)+'.txt'
file_TalkpartA=open(filename_TalkpartA,'w')
file_TalkpartB=open(filename_TalkpartB,'w')
print(filename_TalkpartA)
print(filename_TalkpartB)
file_TalkpartA.writelines(TalkpartA)
file_TalkpartB.writelines(TalkpartB)
count=count+1;
TalkpartA=[];
TalkpartB=[];
f.close()
file_TalkpartA.close()
file_TalkpartB.close()
输出结果:
哇偶。完成喽~