使用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读取浮点数和读取文本文件示例
May 06 Python
python抓取网页中链接的静态图片
Jan 29 Python
python实现简易通讯录修改版
Mar 13 Python
python中pylint使用方法(pylint代码检查)
Apr 06 Python
python实现俄罗斯方块游戏
Mar 25 Python
python使用pipeline批量读写redis的方法
Feb 18 Python
Python3 执行Linux Bash命令的方法
Jul 12 Python
Python 实现的 Google 批量翻译功能
Aug 26 Python
Python 脚本拉取 Docker 镜像问题
Nov 10 Python
Python版中国省市经纬度
Feb 11 Python
pyqt5 QlistView列表显示的实现示例
Mar 24 Python
python 还原梯度下降算法实现一维线性回归
Oct 22 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
thinkPHP5.0框架命名空间详解
2017/03/18 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
jQuery使用手册之 事件处理
2007/03/24 Javascript
javascript下查找父节点的简单方法
2007/08/13 Javascript
关于 byval 与 byref 的区别分析总结
2007/10/08 Javascript
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
详解WordPress开发中get_current_screen()函数的使用
2016/01/11 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
2016/12/08 Javascript
JavaScript反弹动画效果的实现代码
2017/07/13 Javascript
AngularJS ionic手势事件的使用总结
2017/08/09 Javascript
angularJS实现动态添加,删除div方法
2018/02/27 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
2019/02/15 jQuery
javascript实现遮罩层动态效果实例
2019/05/14 Javascript
jQuery操作cookie的示例代码
2019/06/05 jQuery
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
vue实现图片上传功能
2020/05/28 Javascript
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
2020/10/28 Javascript
python在命令行下使用google翻译(带语音)
2014/01/16 Python
python使用电子邮件模块smtplib的方法
2016/08/28 Python
Python通过命令开启http.server服务器的方法
2017/11/04 Python
python3.6+django2.0开发一套学员管理系统
2018/03/03 Python
将字典转换为DataFrame并进行频次统计的方法
2018/04/08 Python
python实现杨氏矩阵查找
2019/03/02 Python
python修改linux中文件(文件夹)的权限属性操作
2020/03/05 Python
html5默认气泡修改的代码详解
2020/03/13 HTML / CSS
canvas实现图片镜像翻转的2种方式
2020/07/22 HTML / CSS
欧洲最大的婴幼儿服装及内衣公司:Petit Bateau(小帆船)
2016/08/16 全球购物
暇步士官网:Hush Puppies
2016/09/22 全球购物
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
幼儿教育感言
2014/02/05 职场文书
合作合同协议书范本
2015/01/27 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
2022/07/15 Servers
Rust中的Struct使用示例详解
2022/08/14 Javascript