《零基础⼊门学习Python》第029讲:⽂件:⼀个任务
⽬录
0. 请写下这⼀节课你学习到的内容:格式不限,回忆并复述是加强记忆的好⽅式!
·任务:将⽂件()中的数据进⾏分割并按照以下规律保存起来:
–⼩甲鱼的对话单独保存为boy_*.txt的⽂件(去掉“⼩甲鱼:”)
–⼩客服的对话单独保存为girl_*.txt的⽂件(去掉“⼩客服:”)
–⽂件中总共有三段对话,分别保存为, ,, , , 共6个⽂件(提⽰:⽂件中不同的对话间已经使⽤“==========”分割)
⼩客服:⼩甲鱼,今天有客户问你有没有⼥朋友?
⼩甲鱼:咦??
⼩客服:我跟她说你有⼥朋友了!
⼩甲鱼:。。。。。。
writelines使用方法python⼩客服:她让你分⼿后考虑下她!然后我说:"您要买个优盘,我就帮您留意下~"
⼩甲鱼:然后呢?
⼩客服:她买了两个,说发⼀个货就好~
⼩甲鱼:呃。。。。。。你真⽜!
⼩客服:那是,谁让我是鱼C最可爱⼩客服嘛~
⼩甲鱼:下次有⼈想调戏你我不阻⽌~
⼩客服:滚
================================================================================
⼩客服:⼩甲鱼,有个好评很好笑哈。
⼩甲鱼:哦?
⼩客服:"有了⼩甲鱼,以后妈妈再也不⽤担⼼我的学习了~"
⼩甲鱼:哈哈哈,我看到丫,我还发微博了呢~
⼩客服:嗯嗯,我看了你的微博丫~
⼩甲鱼:哟西~
⼩客服:那个有条回复“左⼿拿著⼩甲⿂,右⼿拿著打⽕機,哪裡不會點哪裡,so easy ^_^”
⼩甲鱼:T_T
================================================================================
⼩客服:⼩甲鱼,今天⼀个会员想你
⼩甲鱼:哦?什么事?
⼩客服:他说你⼀个学⽣⽉薪已经超过12k了!!
⼩甲鱼:哪⾥的?
⼩客服:上海的
⼩甲鱼:那正常,哪家公司?
⼩客服:他没说呀。
⼩甲鱼:哦
⼩客服:⽼⼤,为什么我⼯资那么低啊??是时候涨涨⼯资了!!
⼩甲鱼:啊,你说什么?我在外边呢,这⾥好吵吖。。。。。。
⼩客服:滚
f = open('')
boy = []
girl = []
count = 1
for each_line in f:
if each_line[:6] != '======':
(role, line_spoken) = each_line.split(':', 1)        if role == '⼩甲鱼':
boy.append(line_spoken)
if role == '⼩客服':
girl.append(line_spoken)
else:
file_name_boy = 'boy_' + str(count) + '.txt'        file_name_girl = '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)
boy_file.close()
girl_file.close()
boy = []
girl = []
count += 1
file_name_boy = 'boy_' + str(count) + '.txt'
file_name_girl = '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)
boy_file.close()
girl_file.close()
f.close()
利⽤函数优化后的程序:
def save_file(boy, girl, count):
file_name_boy = 'boy_' + str(count) + '.txt'
file_name_girl = '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)
boy_file.close()
girl_file.close()
def split_file(file_name):
f = open(file_name)
boy = []
girl = []
count = 1
for each_line in f:
if each_line[:6] != '======':
(role, line_spoken) = each_line.split(':', 1)
if role == '⼩甲鱼':
boy.append(line_spoken)
if role == '⼩客服':
girl.append(line_spoken)
else:
save_file(boy, girl, count)
boy = []
girl = []
count += 1
save_file(boy, girl, count)
f.close()
split_file('')
0. 编写⼀个程序,接受⽤户的输⼊并保存为新的⽂件,程序实现如图:
从明天起,做⼀个幸福的⼈
喂马、劈柴、周游世界
从明天起,关⼼粮⾷和蔬菜
我有⼀所房⼦,⾯朝⼤海,春暖花开
从明天起,和每⼀个亲⼈通信
告诉他们我的幸福
那幸福的闪电告诉我的
我将告诉每⼀个⼈
给每⼀条河每⼀座⼭取⼀个温暖的名字
陌⽣⼈,我也为你祝福
愿你有⼀个灿烂的前程
愿你有情⼈终成眷属
愿你在尘世获得幸福
我只愿⾯朝⼤海,春暖花开
def file_write(file_name):
f = open(file_name, 'w')
print('请输⼊内容【单独输⼊\':w\'保存退出】:')
while True:
write_some = input()
if write_some != ':w':
f.write('%s\n' % write_some)
else:
break
f.close()
file_name = input('请输⼊⽂件名:')
file_write(file_name)
1. 编写⼀个程序,⽐较⽤户输⼊的两个⽂件,如果不同,显⽰出所有不同处的⾏号与第⼀个不同字符的位置,程序实现如图:
def file_compare(file1, file2):
f1 = open(file1)
f2 = open(file2)
count = 0 # 统计⾏数
differ = [] # 统计不⼀样的数量
for line1 in f1:
line2 = f2.readline()
count += 1
if line1 != line2:
differ.append(count)
f1.close()
f2.close()
return differ
file1 = input('请输⼊需要⽐较的头⼀个⽂件名:')
file2 = input('请输⼊需要⽐较的另⼀个⽂件名:')
differ = file_compare(file1, file2)
if len(differ) == 0:
print('两个⽂件完全⼀样!')
else:
print('两个⽂件共有【%d】处不同:' % len(differ))
for each in differ:
print('第 %d ⾏不⼀样' % each)
2. 编写⼀个程序,当⽤户输⼊⽂件名和⾏数(N)后,将该⽂件的前N⾏内容打印到屏幕上,程序实现如图: