使用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下Fabric的简单部署方法
Jul 14 Python
浅析Python中的赋值和深浅拷贝
Aug 15 Python
Python paramiko模块的使用示例
Apr 11 Python
Django 实现购物车功能的示例代码
Oct 08 Python
Laravel+Dingo/Api 自定义响应的实现
Feb 17 Python
python子线程退出及线程退出控制的代码
Oct 16 Python
python实现根据给定坐标点生成多边形mask的例子
Feb 18 Python
python实现ssh及sftp功能(实例代码)
Mar 16 Python
解决python父线程关闭后子线程不关闭问题
Apr 25 Python
keras 自定义loss model.add_loss的使用详解
Jun 22 Python
Numpy实现卷积神经网络(CNN)的示例
Oct 09 Python
PyChon中关于Jekins的详细安装(推荐)
Dec 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
php做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
php判断并删除空目录及空子目录的方法
2015/02/11 PHP
php getcwd与dirname(__FILE__)区别详解
2016/09/24 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
javaScript 数值型和字符串型之间的转换
2009/07/25 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
vue.js+boostrap项目实践(案例详解)
2016/09/21 Javascript
JavaScript 字符串常用操作小结(非常实用)
2016/11/30 Javascript
angular2中使用第三方js库的实例
2018/02/26 Javascript
你应该了解的JavaScript Array.map()五种用途小结
2018/11/14 Javascript
详解基于Wepy开发小程序插件(推荐)
2019/08/01 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
jquery实现垂直手风琴导航栏
2020/02/18 jQuery
angula中使用iframe点击后不执行变更检测的问题
2020/05/10 Javascript
[03:56]还原FTP电影首映式 DOTA2群星拼出遗迹世界
2014/03/26 DOTA
python多线程操作实例
2014/11/21 Python
python中range()与xrange()用法分析
2016/09/21 Python
Django自定义认证方式用法示例
2017/06/23 Python
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
python的pandas工具包,保存.csv文件时不要表头的实例
2018/06/14 Python
Django页面数据的缓存与使用的具体方法
2019/04/23 Python
Django urls.py重构及参数传递详解
2019/07/23 Python
Python TestSuite生成测试报告过程解析
2020/07/23 Python
零基础学python应该从哪里入手
2020/08/11 Python
python 实现性别识别
2020/11/21 Python
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
C#中类(class)与结构(struct)的异同
2013/11/03 面试题
计算机网络专业推荐信
2013/11/24 职场文书
中医临床专业自我鉴定范文
2014/01/15 职场文书
乌镇导游词
2015/02/02 职场文书
五一劳动节慰问信
2015/02/14 职场文书
毕业生就业推荐表自我评价
2015/03/02 职场文书
被告代理词范文
2015/05/25 职场文书
Jupyter Notebook 如何修改字体和大小以及更改字体样式
2021/06/03 Python
常用的Python代码调试工具总结
2021/06/23 Python