使用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中使用PyQt把网页转换成PDF操作代码实例
Apr 23 Python
浅谈插入排序算法在Python程序中的实现及简单改进
May 04 Python
python pandas dataframe 行列选择,切片操作方法
Apr 10 Python
python 使用plt画图,去除图片四周的白边方法
Jul 09 Python
Python hashlib模块实例使用详解
Dec 24 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
Jan 09 Python
Django Admin后台添加数据库视图过程解析
Apr 01 Python
python多进程使用函数封装实例
May 02 Python
Python中socket网络通信是干嘛的
May 27 Python
如何通过python检查文件是否被占用
Dec 18 Python
python Timer 类使用介绍
Dec 28 Python
详解非极大值抑制算法之Python实现
Jun 28 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
星际实力自我测试
2020/03/04 星际争霸
基于Windows下Apache PHP5.3.1安装教程
2010/01/08 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
PHP删除HTMl标签的三种解决方法
2013/06/30 PHP
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
javascript中的事件代理初探
2014/03/08 Javascript
JavaScript中的值类型详细介绍
2014/12/29 Javascript
Node.js的包详细介绍
2015/01/14 Javascript
JQuery调用绑定click事件的3种写法
2015/03/28 Javascript
JS面向对象的程序设计相关知识小结
2018/05/26 Javascript
微信小程序授权登录及解密unionId出错的方法
2018/09/26 Javascript
详解Vue中的基本语法和常用指令
2019/07/23 Javascript
vue中created和mounted的区别浅析
2019/08/13 Javascript
vue点击自增和求和的实例代码
2019/11/06 Javascript
基于vue-cli3创建libs库的实现方法
2019/12/04 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
Python自动化测试Eclipse+Pydev 搭建开发环境
2016/08/15 Python
matplotlib调整子图间距,调整整体空白的方法
2018/08/03 Python
Python+OpenCV实现图像融合的原理及代码
2018/12/03 Python
python实现AES和RSA加解密的方法
2019/03/28 Python
详解python实现小波变换的一个简单例子
2019/07/18 Python
Pycharm和Idea支持的vim插件的方法
2020/02/21 Python
python中使用.py配置文件的方法详解
2020/11/23 Python
python语言time库和datetime库基本使用详解
2020/12/25 Python
伦敦一卡通:The London Pass
2018/11/30 全球购物
英语系本科生个人求职信
2013/09/21 职场文书
自荐信包含哪些内容
2013/10/30 职场文书
五水共治捐款倡议书
2014/05/14 职场文书
幼儿园三八妇女节活动总结
2015/02/06 职场文书
服务员岗位职责范本
2015/04/09 职场文书
2016年“5.12”护士节致辞
2015/07/31 职场文书
浅谈spring boot使用thymeleaf版本的问题
2021/08/04 Java/Android
CSS实现九宫格布局(自适应)的示例代码
2022/02/12 HTML / CSS
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
2022/09/23 MySQL