使用Python读写文本文件及编写简单的文本编辑器


Posted in Python onMarch 11, 2016

学习raw_input和argv是学习读取文件的前提,你可能不能完全理解这个练习,所以认真学习并检查。如果不认真的话,很容易删除一些有用的文件。

这个练习包含两个文件,一个是运行文件ex15.py,一个是ex15_sample.txt。第二个文件不是脚本文件,只包括一些文本,如下:

This is stuff I typed into a file.
It is really cool stuff.
Lots and lots of fun to have in here.

我们要做的就是打开这个文件,然后打印文件内容,我们不在代码中写死文件名称,因为我们如果要读取其他文件的话,就要重新修改代码,解决这个问题的办法就是使用argv和raw_input。

from sys import argv 
 
 
script, filename = argv 
 
 
txt = open(filename) 
 
 
print "Here's your file %r:" % filename 
print txt.read() 
 
 
print "Type the filename again:" 
file_again = raw_input("> ") 
 
 
txt_again = open(file_again) 
 
 
print txt_again.read()

上面的代码做了一些有意思的事情,让我们快速的分解一下:

1-3行使用argv取得文件名。第5行使用open命令,现在使用pydoc open看看这个命令的介绍。

第7行打印一行信息,但是第8行有一些新的东西。我们在txt上调用了一个方法。我们通过open方法得到一个file,这个file有一些我们可以调用的方法。使用这些方法的方法就是在file后面加一个.(点),比如txt.read(),就像是说:“嘿,执行读取命令,没有任何参数!”

剩下部分大家在加分练习中分析吧。

运行结果

root@he-desktop:~/mystuff# python ex15.py ex15_sample.txt
Here's your file 'ex15_sample.txt':

This is stuff I typed into a file.
It is really cool stuff.
Lots and lots of fun to have in here.

Type the filename again:
> ex15_sample.txt
This is stuff I typed into a file.
It is really cool stuff.
Lots and lots of fun to have in here.

下面几个文件的命令比较常用:

  • close -- 关闭文件,相当于编辑器中的File->Save
  • read -- 读取文件内容分配给一个变量
  • readline -- 读取一行内容
  • truncate -- 清空文件,小心使用这个命令
  • write(stuff) -- 写入文件。

这些是你应该知道的重要命令,只有write需要提供参数。

让我们使用这些命令实现一个简单的文本编辑器。

from sys import argv 
 
 
script, filename = argv 
 
 
print "We're going to erase %r." % filename 
print "If you don't want that, hit CTRL-C (^C)." 
print "If you do want that, hot RETURN." 
 
 
raw_input("?") 
 
 
print "Opening the file..." 
target = open(filename, 'w') 
 
 
print "Truncating the file. Goodbye!!" 
target.truncate() 
 
 
print "Now I'm going to ask you for three lines." 
 
 
line1 = raw_input("line 1: ") 
line2 = raw_input("line 2: ") 
line3 = raw_input("line 3: ") 
 
 
print "I'm going to write these to the file." 
 
 
target.write(line1) 
target.write("\n") 
target.write(line2) 
target.write("\n") 
target.write(line3) 
target.write("\n") 
 
 
print "And finally, we close it." 
target.close()

这个程序比较长,所以慢慢来,让它能运行起来。有个办法是,先写几行,运行一下,可以运行再写几行,直到都可以运行。

运行结果
你会看到两个东西,一个是程序的输出:

root@he-desktop:~/mystuff# python ex16.py test.txt
We're going to erase 'test.txt'.
If you don't want that, hit CTRL-C (^C).
If you do want that, hot RETURN.
?
Opening the file...
Truncating the file. Goodbye!!
Now I'm going to ask you for three lines.
line 1: Hi!
line 2: Welcome to my blog!
line 3: Thank you!
I'm going to write these to the file.
And finally, we close it.

还有就是你新建立的文件,打开看看吧。

Python 相关文章推荐
Python学习笔记整理3之输入输出、python eval函数
Dec 14 Python
利用Python自动监控网站并发送邮件告警的方法
Aug 24 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
Nov 08 Python
python3实现多线程聊天室
Dec 12 Python
对python列表里的字典元素去重方法详解
Jan 21 Python
对python中字典keys,values,items的使用详解
Feb 03 Python
pandas对dataFrame中某一个列的数据进行处理的方法
Jul 08 Python
对Django项目中的ORM映射与模糊查询的使用详解
Jul 18 Python
python实现WebSocket服务端过程解析
Oct 18 Python
python实现微信打飞机游戏
Mar 24 Python
基于django micro搭建网站实现加水印功能
May 22 Python
python 决策树算法的实现
Oct 09 Python
简单讲解Python中的数字类型及基本的数学计算
Mar 11 #Python
详解Python中的变量及其命名和打印
Mar 11 #Python
Python基本语法经典教程
Mar 11 #Python
Python使用PIL库实现验证码图片的方法
Mar 11 #Python
Python2.x利用commands模块执行Linux shell命令
Mar 11 #Python
Python实现列表转换成字典数据结构的方法
Mar 11 #Python
python中enumerate函数遍历元素用法分析
Mar 11 #Python
You might like
使用php+Ajax实现唯一校验实现代码[简单应用]
2011/11/29 PHP
php常用文件操作函数汇总
2014/11/22 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
PHP实现创建微信自定义菜单的方法示例
2017/07/14 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
Prototype Function对象 学习
2009/07/12 Javascript
js里的prototype使用示例
2010/11/19 Javascript
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
jQuery版Tab标签切换
2011/03/16 Javascript
Javascript对象中关于setTimeout和setInterval的this介绍
2012/07/21 Javascript
jquery动态添加删除(tr/td)
2015/02/09 Javascript
AngularJS延迟加载html template
2016/07/27 Javascript
JavaScript中${pageContext.request.contextPath}取值问题及解决方案
2016/12/08 Javascript
老生常谈jquery id选择器和class选择器的区别
2017/02/12 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
关于Webpack dev server热加载失败的解决方法
2018/02/22 Javascript
vue使用自定义icon图标的方法
2018/05/14 Javascript
Node.js + express实现上传大文件的方法分析【图片、文本文件】
2019/03/14 Javascript
新手快速入门微信小程序组件库 iView Weapp
2019/06/24 Javascript
Layui表格行工具事件与数据回填方法
2019/09/13 Javascript
python实现的登录和操作开心网脚本分享
2014/07/09 Python
使用python 和 lint 删除项目无用资源的方法
2017/12/20 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
Keras使用ImageNet上预训练的模型方式
2020/05/23 Python
python 实现全球IP归属地查询工具
2020/12/18 Python
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
英国高级百货公司:Harvey Nichols
2017/01/29 全球购物
Bally巴利中国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/10/09 全球购物
Java编程面试题
2016/04/04 面试题
客服服务心得体会
2013/12/30 职场文书
运动会入场词200字
2014/02/15 职场文书
大学生工作自荐书
2014/06/16 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
文员岗位职责
2015/02/04 职场文书
详解Redis集群搭建的三种方式
2021/05/31 Redis