FishC笔记—29 讲 文件:一个任务
本期内容详解:
任务:将文件(record.txt)中的数据进行分割并按照以下规律保存起来:
-小甲鱼的对话单独保存为boy_*.txt的文件(去掉“小甲鱼:”)
-小客服的对话单独保存为girl_*.txt的文件(去掉“小客服:”)
-文件中总共有三段对话,分别保存为boy_1.txt,girl_1.txt,boy_2.txt,
girl_2.txt,boy_3.txt,girl_3.txt共6个文件(提示:文件中的不同对话见已经使用“=========”分割)
可以从这里下载record.txt文档:链接:http://pan.baidu.com/s/1sjzAhNR(密码:tf2e)
def save_file(boy,girl,count): file_name_boy = 'boy_' + str(count) + '.txt' file_name_girl = 'girl_' + str(count) + '.txt' boy_file = open('D:\\%s'%file_name_boy,'w') girl_file = open('D:\\%s'%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('D:\\record.txt') 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) count += 1 boy = [] girl = [] save_file(boy,girl,count) f.close() split_file('D:\\record.txt')
需要注意的几点:
1、代码
(role,line_spoken) = each_line.split(':',1)
其中,冒号应该是中文输入法下的’:’,否则会报错
2、直接在record.txt所在目录下创建.py文件时,上述代码中的打开文件操作可以直接用文件名而不需要指明路径,即可以修改为:
f.open('record.txt')
上述两个文件不在同一目录下时,则应指明路径
典型课后题
编写一个程序,接受用户的输入并保存为新的文件,程序实现如图:
论坛参考答案:
def file_writer(filename): f = open(filename,'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)
编写一个程序,比较用户输入的两个文件,如果不同,显示出所有不同处的行号与第一个不同字符的位置,程序实现如
图:
参考答案:
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)
编写一个程序,当用户输入文件名和行数(N)后,将该文件的前N行内容打印到屏幕上,程序实现如图:
参考答案:
def file_view(file_name,line_nun): print('\n文件%s的前%s的内容如下:\n'%(file_name,line_num)) f = open(file_name) for i in range(int(line_num)): print(f.readline(),end='') f.close() file_name = input(r'请输入要打开的文件(C:\\test.txt):') line_num = input('请输入需要显示该文件前几行:') file_view(file_name,line_num)
呃,不得不说我们的用户变得越来越刁钻了。要求在上一题的基础上扩展,用户可以随意输入需要显示的行数。(如输
入13:21打印第13行到第21行,输入:21打印前21行,输入21:则打印从第21行开始到文件结尾所有内容)
论坛参考答案:
def file_view(file_name, line_num): if line_num.strip() == ':': begin = '1' end = '-1' (begin, end) = line_num.split(':') if begin == '': begin = '1' if end == '': end = '-1' if begin == '1' and end == '-1': prompt = '的全文' elif begin == '1': prompt = '从开始到%s' % end elif end == '-1': prompt = '从%s到结束' % begin else: prompt = '从第%s行到第%s行' % (begin, end) print('\n文件%s%s的内容如下:\n' % (file_name, prompt)) begin = int(begin) - 1 end = int(end) lines = end - begin f = open(file_name) for i in range(begin): # 用于消耗掉begin之前的内容 f.readline() if lines < 0: print(f.read()) else: for j in range(lines): print(f.readline(), end='') f.close() file_name = input(r'请输入要打开的文件(C:\\test.txt):') line_num = input('请输入需要显示的行数【格式如 13:21 或 :21 或 21: 或 : 】:') file_view(file_name, line_num)
编写一个程序,实现“全部替换”功能。
个人认为参考答案的原代码有点问题,修改为以下形式:
def file_replace(file_name, rep_word, new_word): f_read = open(file_name) content = [] count = 0 for eachline in f_read: if rep_word in eachline: count += eachline.count(rep_word) #count感觉应该用这个 eachline = eachline.replace(rep_word, new_word) content.append(eachline) decide = input('\n文件 %s 中共有%s个【%s】\n您确定要把所有的【%s】替换为【%s】吗?\n【YES/NO】:' \ % (file_name, count, rep_word, rep_word, new_word)) if decide in ['YES', 'Yes', 'yes']: f_write = open(file_name, 'w') f_write.writelines(content) f_write.close() f_read.close() file_name = input('请输入文件名:') rep_word = input('请输入需要替换的单词或字符:') new_word = input('请输入新的单词或字符:') file_replace(file_name, rep_word, new_word)
FishC笔记—29 讲 文件:一个任务相关推荐
- FishC笔记—19 讲 函数:我的地盘听我的
本期内容详解: 1.函数与过程:过程(procedure)是简单的,特殊且没有返回值的:函数(Function)有返回值 Python严格来说只有函数没有过程 2.局部变量:在局部生效如在函数中定义的 ...
- FishC笔记—06 讲:Pyhon 之常用操作符
本期内容详解: 1. 算术运算符: 加(+),减(-),乘(*),除(/),幂运算(**),地板除(//) 1) /和//的区别 在 Python 中的除运算符与其它程序语言的不太一样,/表示真正的除 ...
- 小啊呜产品读书笔记001:《邱岳的产品手记-15》第28讲 产品分析的套路(上):谁是利益相关者? 29讲产品分析的套路(中):解决什么问题?
小啊呜产品读书笔记001:<邱岳的产品手记-15>第28讲 产品分析的套路(上):谁是利益相关者?& 29讲产品分析的套路(中):解决什么问题? 一.今日阅读计划 二.泛读& ...
- 【小甲鱼】python零基础入门学习笔记 03讲~43讲
本篇基于[莫烦]python基础教程,属于查漏补缺 建议学习顺序 小甲鱼->莫烦numpy&pandas 目录 第003讲 插曲之变量和字符串 课堂笔记 变量 变量 需要注意的地方 字符 ...
- 视觉SLAM十四讲学习笔记-第二讲-开发环境搭建
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 lin ...
- 从零开始学习VIO笔记 --- 第一讲:基础知识(四元数,李代数)
从零开始学习VIO笔记 --- 第一讲:基础知识(四元数,李代数) 一. 向量的内积与外积 二. 旋转与平移 2.1 旋转表示 --- 旋转矩阵R 2.2 平移向量 2.3 变换矩阵T与齐次坐标 2. ...
- 学习笔记之编程达到一个高的境界就是自制脚本语言(图)
学习笔记之编程达到一个高的境界就是自制脚本语言(图) 编程达到一个高的境界就是自制脚本语言,通过这可以精通编程里面的高深的技术,如编译原理.语言处理器.编译器与解释器,这些都是代表一个程序员实力的技术 ...
- P4学习笔记(二)一个简单P4交换机实现
P4学习笔记(一)初始P4 P4学习笔记(二)一个简单P4交换机实现 文章目录 1. 架构模型 2.预定义模块详细描述 2.1 Arbiter 模块 2.2 Parser runtime 模块 2.3 ...
- Android 笔记之 R 文件
Android笔记之R文件 阅读目录 介绍 R 文件的内容 介绍 通过 R 文件引用资源 一.R 文件的内容 在 Android Studio 中 R 文件位于 app -> build -&g ...
- C++学习笔记之对文件的操作2
转载自** https://www.cnblogs.com/uniqueliu/archive/2011/08/03/2126680.html ** 什么都不说了,继续<C++学习笔记之对文件的 ...
最新文章
- oracle 12c java 驱动,oracle12c驱动jar包
- b树索引 java_B树索引最通俗易懂的介绍
- 【leetcode刷题笔记】Merge k Sorted Lists
- python字典函数_python-字典常用函数
- 白岩松曾说过这样一段话
- 在线Javascript压缩工具
- baidumap vue 判断范围_vue中百度地图API的调用
- 夺命雷公狗---linux NO:26 linux下的用户和用户组的管理
- 测试评审要点说明(测试计划、用例、报告)
- php 调用redfish,Huawei iBMC 通过redfish接口设置KVM key登录html5远程控制台操作记录
- Android M 设置里面关于手机型号的修改
- 没有自制力的人,有什么资格谈努力?
- 国家示范性高职院校名单(109所)
- java主类不用public_Java源文件如果含有主类,主类必须是public类
- fastjson转换json字符串key的首字母小写变大写的解决办法
- latex写论文(TeXstudio工具)
- 【元胞自动机】元胞自动机交通事故通行【含Matlab源码 1345期】
- jack-server配置
- 小米android手机密码忘了怎么解锁,小米5忘记了锁屏密码怎么办 小米5忘记锁屏密码的解决方法...
- 轻松快捷的安装Testlink,终于可以轻松搞定!
热门文章
- 机器学习笔记(李宏毅 2021/2022)——第一节:基本概念
- 2022美赛M奖经验总结(4)图文优化篇
- webstorm控制台中文乱码解决
- swift 第三方库SwiftyJSON
- dmx512协议的编程c语言,我在此分享一份DMX512协议的发送程序,希望对做灯光控制的人有一定的帮助(我测试过了跟DMX512控制台发出的方波是一样一样的)...
- 《数学分析新讲》_张筑生,12.5节:隐函数定理(1)
- iOS中的armv6、armv7、armv7s含义详解
- java时钟代码_JAVA实现时钟
- Spring官方文档(中文版!!!)
- C++ 冰河木马的实现