Python--小甲鱼学习笔记--第29课:文件读写、文件对比、文件分割、内容显示
来源:互联网 发布:淘宝客的链接怎么看 编辑:程序博客网 时间:2024/05/01 22:04
学习视频中的任务:
将文件(record.txt)中的数据进行分割并按照以下规律保存起来:
1). 小甲鱼的对话单独保存为boy_*.txt的文件(去掉“小甲鱼:”)
2). 小客服的对话单独保存为girl_*.txt的文件(去掉“小客服:”)
3). 文件中总共有三段对话,分别保存为boy_1.txt, girl_1.txt,boy_2.txt, girl_2.txt, boy_3.txt, gril_3.txt共6个文件(提示:文件中不同的对话间已经使用“==========”分割)
代码实现:
def subfile(boy, girl, count): file_name_boy = 'boy_' + str(count) + '.txt' file_name_girl = 'girl_' + str(count) + '.txt' file_boy = open(file_name_boy,'w') file_girl = open(file_name_girl,'w') file_boy.writelines(boy) file_girl.writelines(girl) file_boy.close() file_girl.close() def split_file(filename): f = open(filename,'r') count = 1 boy = [] girl = [] for each_line in f: if each_line[:6] != "======": (role, spoken) = each_line.split(':',1) #注意split()使用方式 if role == '小甲鱼': boy.append(each_line) elif role == '小客服': girl.append(each_line) else: subfile(boy, girl, count) count+=1 boy = [] girl = [] subfile(boy, girl, count) f.close()filename = r'C:\Users\XXN\Desktop\python\record.txt'split_file(filename)
0.编写一个程序,接受用户的输入并保存为新的文件,程序实现如图:
代码如下:write_file.py
filename = input('请输入文件名:')f = open(filename,'w')words = ''print("请输入内容【单独输入':w'保存退出】:")while True: words = input() if words != ':w': f.write('%s\n'%words) else: breakf.close()
1.编写一个程序,比较用户输入的两个文件,如果不同,显示出所有不同处的行号与第一个不同字符的位置,程序实现如图:
代码实现:compare_file.py
filename1 = input("请输入需要比较的头一个文件名:")filename2 = input("请输入需要比较的头一个文件名:")f1 = open(filename1,'r')f2 = open(filename2,'r')diff = [] #存放不同的行号line = 0 #标记当前行for each_line1 in f1: line+=1 for each_line2 in f2: if each_line1 != each_line2: diff.append(line) breakf1.close()f2.close()print("两个文件共有【%d】处不同:"%len(diff))for each in diff: print("第 %d 行不一样" %each)
运行结果:
2.编写一个程序,当用户输入文件名和行数(N)后,将该文件的前N行内容打印到屏幕上,程序实现如图:
代码实现:print_file1.py
filename = input("请输入要打开的文件(C:\\test.txt):")f = open(filename,'r')lines = int(input("请输入需要显示该文件的前几行:"))print("文件%s的前%d行的内容如下:" %(filename, lines))for each_line in f: print(each_line) lines-=1 if lines == 0: breakf.close()
3.呃,不得不说我们的用户变得越来越刁钻了。要求在上一题的基础上扩展,用户可以随意输入需要显示的行数。(如输入13:21打印第13行到第21行,输入:21打印前21行,输入21:则打印从第21行开始到文件结尾所有内容)
代码:print_file2.py
filename = input("请输入要打开的文件(C:\\test.txt):")f = open(filename,'r')contex = f.readlines()num_row = len(contex)str_lines = input("请输入需要显示的行数【格式如13:21或:21或21:】:")(first, last) = str_lines.split(':',1)print('\n',end='')if first == '' and last == '': print('文件%s的全文内容如下:\n'%filename) for i in range(0,num_row): print(contex[i])elif first == '': last = int(last) print('文件%s从开始到第%d行的内容如下:\n'%(filename, last)) for i in range(0,last): print(contex[i])elif last == '': first = int(first) print("文件%s从第%d行到末尾的内容如下:\n"%(filename, first)) for i in range(first-1,num_row): print(contex[i])else: first = int(first) last = int(last) print("文件%s从第%d行到第%d行的内容如下:\n"%(filename, first, last)) for i in range(first, last): print(contex[i])f.close()
4.编写一个程序,实现“全部替换”功能。
代码实现:replace_words.py
filename = input("请输入文件名:")f = open(filename,'r')old_words = input("请输入需要替换的单词或字符:")new_words = input("请输入新的单词或字符:")contex = f.read()length = len(contex)Index = set()for curr_word in range(0, length): Index.add(contex.find(old_words, curr_word, length))Index = list(Index)Index.sort(reverse=True)if Index[-1]==-1: Index.pop()print('文件 %s 中共有%d个【%s】'%(filename, len(Index), old_words))flag = input("您确定要把所有的【%s】替换为【%s】吗?\n【YES/NO】:"%(old_words, new_words))if (flag == 'YES') or (flag == 'yes'): old_sub = len(old_words) for each in Index: contex = contex[:each] + new_words + contex[each + old_sub:] f.close()f = open(filename,'w')f.write(contex)f.close()
阅读全文
0 0
- Python--小甲鱼学习笔记--第29课:文件读写、文件对比、文件分割、内容显示
- Python--小甲鱼学习笔记--第28课:文件(文件打开方式、文件对象方法)
- Python--小甲鱼学习笔记--第32课:异常处理
- Python--小甲鱼学习笔记--第25课:初学dict()
- Python学习笔记--文件读写
- python学习笔记 文件读写
- python文件读写的小笔记
- Linux学习笔记 文件读写小细节
- 【Python 笔记】文件读写
- python文件读写实例学习笔记
- Python学习笔记(3)--文件读写
- python 学习笔记 错误调试 文件读写
- 【Python学习笔记】IO编程:文件读写
- Python学习笔记(二):文件读写
- Python学习笔记——文件读写
- 文件读写学习笔记
- 文件读写学习笔记
- 学习笔记---文件读写
- 多线程的代价
- 有序单链表插入算法
- 排序算法 ✈
- ajax实现留言并在页面展示最新注册内容
- 使用inno setup制作安装包
- Python--小甲鱼学习笔记--第29课:文件读写、文件对比、文件分割、内容显示
- 弘智教育-效果图-渲染1-渲染设置,vr灯光
- 计算机视觉之OpenCV教程 ---Mat类基础(一)
- windows 下安装redis集群
- 10.5、spring boot的web应用——更改服务器
- launch文件的理解
- 51nod 1001 数组中和等于K的数对
- bzoj3876 [Ahoi2014&Jsoi2014]支线剧情(有源汇有上下界最小费用流)
- 小白的机器学习:Numpy矩阵扫盲