从零学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 相关文章推荐
Python中多线程及程序锁浅析
Jan 21 Python
Python字符串处理函数简明总结
Apr 13 Python
python中__call__内置函数用法实例
Jun 04 Python
python实现BackPropagation算法
Dec 14 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
Feb 18 Python
Python3 执行系统命令并获取实时回显功能
Jul 09 Python
python基于socket实现的UDP及TCP通讯功能示例
Nov 01 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
Feb 25 Python
python解压zip包中文乱码解决方法
Nov 27 Python
python中Tkinter 窗口之输入框和文本框的实现
Apr 12 Python
Jupyter Notebook内使用argparse报错的解决方案
Jun 03 Python
Python turtle编写简单的球类小游戏
Mar 31 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
模仿OSO的论坛(四)
2006/10/09 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
2014/12/17 PHP
php将图片保存为不同尺寸图片的图片类实例
2015/03/30 PHP
php自动识别文字编码并转换为目标编码的方法
2015/08/08 PHP
jQuery Ajax 全解析
2009/02/08 Javascript
自写简单JS判断是否已经弹出页面
2010/10/20 Javascript
JavaScript中eval函数的问题
2016/01/31 Javascript
jQuery 限制输入字符串长度
2016/06/20 Javascript
JS控件bootstrap suggest plugin使用方法详解
2017/03/25 Javascript
详解JS中遍历语法的比较
2017/04/07 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
jQuery实现验证表单密码一致性及正则表达式验证邮箱、手机号的方法
2017/12/05 jQuery
node内置调试方法总结
2018/02/22 Javascript
Nuxt.js 数据双向绑定的实现
2019/02/17 Javascript
elementUI同一页面展示多个Dialog的实现
2020/11/19 Javascript
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
python自然语言编码转换模块codecs介绍
2015/04/08 Python
Python 转义字符详细介绍
2017/03/21 Python
Python浅复制中对象生存周期实例分析
2018/04/02 Python
移动Web—CSS为Retina屏幕替换更高质量的图片
2012/12/24 HTML / CSS
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
香港交友网站:be2香港
2018/07/22 全球购物
美国宠物美容和宠物用品购物网站:Cherrybrook
2018/12/07 全球购物
NFL加拿大官方网上商店:NHLShop.ca
2019/03/12 全球购物
IdealFit官方网站:女性蛋白质、补充剂和运动服装
2019/03/24 全球购物
网上开店必备创业计划书
2014/01/26 职场文书
国际贸易专业个人职业生涯规划
2014/02/15 职场文书
节能环保口号
2014/06/12 职场文书
志愿者活动总结报告
2014/06/27 职场文书
分公司总经理岗位职责
2014/08/03 职场文书
四风个人对照检查材料思想汇报(办公室通用版)
2014/10/07 职场文书
2014超市收银员工作总结
2014/11/13 职场文书
学生通报表扬范文
2015/05/04 职场文书
党章党规党纪学习心得体会
2016/01/14 职场文书
Python如何利用正则表达式爬取网页信息及图片
2021/04/17 Python
python模块与C和C++动态库相互调用实现过程示例
2021/11/02 Python