使用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自动化工具日志查询分析脚本代码实现
Nov 26 Python
Python中dictionary items()系列函数的用法实例
Aug 21 Python
Python3处理文件中每个词的方法
May 22 Python
python使用SMTP发送qq或sina邮件
Oct 21 Python
python中实现k-means聚类算法详解
Nov 11 Python
python学习笔记之列表(list)与元组(tuple)详解
Nov 23 Python
不到40行代码用Python实现一个简单的推荐系统
May 10 Python
利用python实现PSO算法优化二元函数
Nov 13 Python
Python基于class()实现面向对象原理详解
Mar 26 Python
python Django 反向访问器的外键冲突解决
May 20 Python
最简单的matplotlib安装教程(小白)
Jul 28 Python
python实现发送邮件
Mar 02 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 时间转换Unix时间戳代码
2010/01/22 PHP
curl 出现错误的调试方法(必看)
2017/02/13 PHP
php可变长参数处理函数详解
2017/02/22 PHP
php+croppic.js实现剪切上传图片功能
2018/08/14 PHP
js利用div背景,做一个竖线的效果。
2008/11/22 Javascript
JavaScript实现网页上的浮动广告的简单方法
2013/06/14 Javascript
javascript设计模式之对象工厂函数与构造函数详解
2015/07/30 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
2015/12/01 Javascript
jQuery拖动元素并对元素进行重新排序
2015/12/30 Javascript
JavaScript实现图片滑动切换的代码示例分享
2016/03/06 Javascript
JavaScript常用判断写法大全(推荐)
2016/05/30 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
2016/12/14 Javascript
详解jQuery事件
2017/01/13 Javascript
js实现复制功能(多种方法集合)
2018/01/06 Javascript
vue使用技巧及vue项目中遇到的问题
2018/06/04 Javascript
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
ES6 Promise对象的应用实例分析
2019/06/27 Javascript
JS表格的动态操作完整示例
2020/01/13 Javascript
python将图片文件转换成base64编码的方法
2015/03/14 Python
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
Python简单删除列表中相同元素的方法示例
2017/06/12 Python
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
CSS3新属性transition-property transform box-shadow实例学习
2013/06/06 HTML / CSS
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
2014/10/11 HTML / CSS
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
serialVersionUID具有什么样的特征
2014/02/20 面试题
什么是ESB?请介绍一下ESB?
2015/05/27 面试题
应聘教师推荐信
2013/10/31 职场文书
纠风工作实施方案
2014/03/15 职场文书
建议书范文
2015/02/05 职场文书
呼兰河传读书笔记
2015/06/30 职场文书
公司员工管理制度
2015/08/04 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书
创业计划书之农家乐
2019/10/09 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python