使用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编码时应该注意的几个情况
Mar 04 Python
在Python的Tornado框架中实现简单的在线代理的教程
May 02 Python
详解Python中contextlib上下文管理模块的用法
Jun 28 Python
Python 变量类型详解
Oct 10 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
Dec 19 Python
Python二进制文件读取并转换为浮点数详解
Jun 25 Python
python字符串分割及字符串的一些常规方法
Jul 24 Python
Django 开发环境与生产环境的区分详解
Jul 26 Python
基于python实现文件加密功能
Jan 06 Python
python实现替换word中的关键文字(使用通配符)
Feb 13 Python
使用SQLAlchemy操作数据库表过程解析
Jun 10 Python
pandas求平均数和中位数的方法实例
Aug 04 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
几种显示数据的方法的比较
2006/10/09 PHP
PHP中的正规表达式(二)
2006/10/09 PHP
利用PHP实现智能文件类型检测的实现代码
2011/08/02 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
Centos下升级php5.2到php5.4全记录(编译安装)
2015/04/03 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
一个完整的php文件上传类实例讲解
2015/10/27 PHP
PHP与jquery实时显示网站在线人数实例详解
2016/12/02 PHP
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
第一个JavaScript入门基础 document.write输出
2010/02/22 Javascript
JavaScript 模式之工厂模式(Factory)应用介绍
2012/11/15 Javascript
理解JAVASCRIPT中hasOwnProperty()的作用
2013/06/05 Javascript
Nodejs进程管理模块forever详解
2014/06/01 NodeJs
js检验密码强度(低中高)附图
2014/06/05 Javascript
jQuery实现平滑滚动到指定锚点的方法
2015/03/20 Javascript
深入浅析JavaScript中的作用域和上下文
2016/03/26 Javascript
js手动播放图片实现图片轮播效果
2016/09/17 Javascript
vue组件如何被其他项目引用
2017/04/13 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
2017/10/18 Javascript
vue 登录滑动验证实现代码
2018/08/24 Javascript
在vue项目中引入高德地图及其UI组件的方法
2018/09/04 Javascript
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
对pandas里的loc并列条件索引的实例讲解
2018/11/15 Python
金牌葡萄酒俱乐部:Gold Medal Wine Club
2017/11/02 全球购物
采购文员岗位职责
2013/11/20 职场文书
商务宴请邀请函范文
2015/02/02 职场文书
民事调解书范文
2015/05/20 职场文书
红十字会救护培训简讯
2015/07/20 职场文书
2015年度学校应急管理工作总结
2015/10/22 职场文书
党员公开承诺书2016
2016/03/24 职场文书
关于办理居住证的介绍信模板
2019/11/27 职场文书
详解Vue的sync修饰符
2021/05/15 Vue.js
Spring Boot 实现 WebSocket
2022/04/30 Java/Android
Nginx 常用配置
2022/05/15 Servers