从零学python系列之从文件读取和保存数据


Posted in Python onMay 23, 2014

在HeadFirstPython网站中下载所有文件,解压后以chapter 3中的“sketch.txt”为例:

 

新建IDLE会话,首先导入os模块,并将工作目录却换到包含文件“sketch.txt”的文件夹,如C:\\Python33\\HeadFirstPython\\chapter3

>>> import os
>>> os.getcwd()    #查看当前工作目录
'C:\\Python33'
>>> os.chdir('C:/Python33/HeadFirstPython/chapter3')   #切换包含数据文件的文件夹
>>> os.getcwd()     #查看切换后的工作目录
'C:\\Python33\\HeadFirstPython\\chapter3'

打开文件“sketch.txt”,读取并显示前两行:

>>> data=open('sketch.txt')
>>> print(data.readline(),end='')
Man: Is this the right room for an argument?
>>> print(data.readline(),end='')
Other Man: I've told you once.

回到文件起始位置,使用for语句处理文件中的每行,最后关闭文件:

>>> data.seek(0)   #使用seek()方法回到文件起始位置
>>> for each_line in data:
    print(each_line,end='')
    
Man: Is this the right room for an argument?
Other Man: I've told you once.
Man: No you haven't!
Other Man: Yes I have.
Man: When?
Other Man: Just now.
Man: No you didn't!
Other Man: Yes I did!
Man: You didn't!
Other Man: I'm telling you, I did!
Man: You did not!
Other Man: Oh I'm sorry, is this a five minute argument, or the full half hour?
Man: Ah! (taking out his wallet and paying) Just the five minutes.
Other Man: Just the five minutes. Thank you.
Other Man: Anyway, I did.
Man: You most certainly did not!
Other Man: Now let's get one thing quite clear: I most definitely told you!
Man: Oh no you didn't!
Other Man: Oh yes I did!
Man: Oh no you didn't!
Other Man: Oh yes I did!
Man: Oh look, this isn't an argument!
(pause)
Other Man: Yes it is!
Man: No it isn't!
(pause)
Man: It's just contradiction!
Other Man: No it isn't!
Man: It IS!
Other Man: It is NOT!
Man: You just contradicted me!
Other Man: No I didn't!
Man: You DID!
Other Man: No no no!
Man: You did just then!
Other Man: Nonsense!
Man: (exasperated) Oh, this is futile!!
(pause)
Other Man: No it isn't!
Man: Yes it is!
>>> data.close()

读取文件后,将不同role对应数据分别保存到列表man和other:

import os
print(os.getcwd())
os.chdir('C:\Python33\HeadFirstPython\chapter3')
man=[]    #定义列表man接收Man的内容
other=[]  #定义列表other接收Other Man的内容
try:
    data=open("sketch.txt")
    for each_line in data:
        try:
            (role, line_spoken)=each_line.split(':', 1)
            line_spoken=line_spoken.strip()
            if role=='Man':
                man.append(line_spoken)
            elif role=='Other Man':
                other.append(line_spoken)
        except ValueError:
                pass
    data.close()
except IOError:
    print('The datafile is missing!')
print (man)
print (other)

Tips:

使用open()方法打开磁盘文件时,默认的访问模式为r,表示读,不需要特意指定;

要打开一个文件完成写,需要指定模式w,如data=open("sketch.txt","w"),如果该文件已经存在则会清空现有内容;

要追加到一个文件,需要指定模式a,不会清空现有内容;

要打开一个文件完成写和读,且不清空现有内容,需要指定模式w+;

 例如,将上例中保存的man和other内容以文件方式保存时,可修改如下:

import os
print(os.getcwd())
os.chdir('C:\Python33\HeadFirstPython\chapter3')
man=[]
other=[]
try:
    data=open("sketch.txt")
    for each_line in data:
        try:
            (role, line_spoken)=each_line.split(':', 1)
            line_spoken=line_spoken.strip()
            if role=='Man':
                man.append(line_spoken)
            elif role=='Other Man':
                other.append(line_spoken)
        except ValueError:
                pass
    data.close()
except IOError:
    print('The datafile is missing!')
try:
    man_file=open('man.txt', 'w')      #以w模式访问文件man.txt
    other_file=open('other.txt','w')   #以w模式访问文件other.txt
    print (man, file=man_file)           #将列表man的内容写到文件中
    print (other, file=other_file)
except IOError:
    print ('File error')
finally:
    man_file.close()
    other_file.close()

但是第26行print()为什么会报错?“syntax error while detecting tuple”,有大神能给解惑一下不

Python 相关文章推荐
win7上python2.7连接mysql数据库的方法
Jan 14 Python
K-means聚类算法介绍与利用python实现的代码示例
Nov 13 Python
详解python使用Nginx和uWSGI来运行Python应用
Jan 09 Python
Python使用Tkinter实现机器人走迷宫
Jan 22 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
Apr 27 Python
python实现定时发送qq消息
Jan 18 Python
python实现五子棋游戏
Jun 18 Python
详解用python生成随机数的几种方法
Aug 04 Python
python实现KNN分类算法
Oct 16 Python
python基于gevent实现并发下载器代码实例
Nov 01 Python
Python字节单位转换实例
Dec 05 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
Jan 02 Python
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
May 23 #Python
从零学python系列之新版本导入httplib模块报ImportError解决方案
May 23 #Python
从零学python系列之数据处理编程实例(二)
May 22 #Python
从零学python系列之数据处理编程实例(一)
May 22 #Python
Python学习笔记_数据排序方法
May 22 #Python
从零学Python之hello world
May 21 #Python
Python开发实例分享bt种子爬虫程序和种子解析
May 21 #Python
You might like
php 无限分类的树类代码
2009/12/03 PHP
PHP框架Swoole定时器Timer特性分析
2014/08/19 PHP
php函数serialize()与unserialize()用法实例
2014/11/06 PHP
thinkPHP分页功能实例详解
2017/05/05 PHP
PHP字符串中抽取子串操作实例分析
2019/06/22 PHP
Javascript调试工具(下载)
2007/01/09 Javascript
一个高效的JavaScript压缩工具下载集合
2007/03/06 Javascript
javascript模仿msgbox提示效果代码
2008/06/10 Javascript
javascript 特性检测并非浏览器检测
2010/01/15 Javascript
仅Firefox中链接A无法实现模拟点击以触发其默认行为
2011/07/31 Javascript
jQuery之尺寸调整组件的深入解析
2013/06/19 Javascript
jQuery修改li下的样式以及li下的img的src的值的方法
2014/11/02 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
2015/12/08 Javascript
JS代码随机生成姓名、手机号、身份证号、银行卡号
2016/04/27 Javascript
js窗口震动小程序分享
2016/11/28 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
2017/04/18 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
js中less常用的方法小结
2017/08/09 Javascript
vue中SPA单页面应用程序详解
2017/11/07 Javascript
在vue中添加Echarts图表的基本使用教程
2017/11/22 Javascript
小程序实现五星点评效果
2018/11/03 Javascript
Vue项目从webpack3.x升级webpack4不完全指南
2019/04/28 Javascript
VUE:vuex 用户登录信息的数据写入与获取方式
2019/11/11 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
python抓取百度首页的方法
2015/05/19 Python
Python numpy生成矩阵、串联矩阵代码分享
2017/12/04 Python
TensorFlow实现创建分类器
2018/02/06 Python
基于随机梯度下降的矩阵分解推荐算法(python)
2018/08/31 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
Python实现bilibili时间长度查询的示例代码
2020/01/14 Python
python实现小程序推送页面收录脚本
2020/04/20 Python
酒吧员工的岗位职责
2013/11/26 职场文书
文明风采获奖感言
2014/02/18 职场文书
《草原的早晨》教学反思
2014/04/08 职场文书
教师党员个人整改措施
2014/10/27 职场文书
导游词之绍兴柯岩古镇
2020/01/09 职场文书