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()


原创粉丝点击