文件基本操作

Python从文本读取数据时,一次会到达一个数据行。

sketch.txt文件

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!

需求:读取文件,将上面的对话都加上said

代码如下:

# coding:utf-8
import os # 查看当前工作目录
print(os.getcwd())
# 切换为包含数据文件的文件夹
os.chdir('../../HeadFirstPython/chapter03_except')
# 再次查看当前工作目录
print(os.getcwd()) # 打开文本
data = open('sketch.txt')
# 获取一个数据行,打印
print(data.readline(), end='')
# 再次获取一个数据行,打印
print(data.readline(), end='') # 回到文件原始位置
data.seek(0)
# data.tell() # 等价
for each_line in data:
# 当每一行都存在冒号时,执行if中的操作
if not each_line.find(':') == -1:
# 遇到冒号就切割字符串,返回一个字符串列表,赋至一个目变量元组,则称为多重赋值
# 由于一行字符串中可能有多个: 所以我们需要在使用split方法maxsplit参数
(role, line_spoken) = each_line.split(":", 1)
print(role, end='')
print(' said:', end='')
print(line_spoken, end='') # 关闭文件
data.close()

但是这段代码过于脆弱,但文件格式发生变化或者其他异常情况,还是出问题,这时需要用到异常机制。

处理异常

try/except机制

# coding:utf-8

# 如果文件不存在,异常处理
try:
data = open('sketch.txt')
for each_line in data:
try:
(role, line_spoken) = each_line.split(":", 1)
print(role, end='')
print(' said:', end='')
print(line_spoken, end='')
except:
# 如果出现异常,pass,继续执行代码
pass
data.close()
# 想要捕捉特性的异常,需要制定错误类型
except IOError:
print("the data file is missing!")
# 其他所有的异常
except:
print("the data file is broken!")

  

其他:

判断文件是否存在:

os.path.exists('sketch.txt')

Head First Python之3文件与异常的更多相关文章

  1. python学习二(文件与异常)

    Python中使用open BIF与文件交互,与for语句结合使用,一次读取一行 读取文件sketch.txt,文件内容如下: Man: Ah! (taking out his wallet and ...

  2. python进阶(7)--文件与异常

    一.文件读取二.文件写入三.异常四.存储数据 ---------------------------------------分割线:正文-------------------------------- ...

  3. Python的文件及异常

    1. Python的文件及异常 1.1 文件操作 1.1.1 从文件中读取数据 许多情况下,我们的信息是存储在文本中的.例如对用户行为的分析,用户访问系统或者网站的访问信息会被存储于文本中,然后对文本 ...

  4. python入门学习:9.文件和异常

    python入门学习:9.文件和异常 关键点:文件.异常 9.1 从文件中读取数据9.2 写入文件9.3 异常9.4 存储数据 9.1 从文件中读取数据 9.1.1 读取整个文件  首先创建一个pi_ ...

  5. [Python 从入门到放弃] 6. 文件与异常(二)

    本章所用test.txt文件可以在( [Python 从入门到放弃] 6. 文件与异常(一))找到并自行创建 现在有个需求,对test.txt中的文本内容进行修改: (1)将期间的‘:’改为‘ sai ...

  6. Python模块、包、异常、文件(案例)

    Python模块.包.异常.文件(案例) python.py #模块 # Python中的模块(Module),是一个Python文件,以.py文件结尾,包含了Python对象定义和Python语句, ...

  7. Python获得文件时间戳 异常访问监控 邮件定时提醒

    Python获得文件时间戳  异常访问监控 邮件定时提醒

  8. Python之文件和异常IO

    文件和异常 读写文本文件 读取文本文件时,需要在使用open函数时指定好带路径的文件名(可以使用相对路径或绝对路径)并将文件模式设置为'r'(如果不指定,默认值也是'r'),然后通过encoding参 ...

  9. 【Python编程:从入门到实践】chapter10 文件和异常

    chapter10 文件和异常 10.1 从文件中读取数据 10.1.1 读取整个文件 with open("pi.txt") as file_object: contents = ...

随机推荐

  1. HTTPS安全超文本传输协议

    一.什么是HTTPS 简单的理解HTTPS就是使用SSL/TLS加密内容的.安全的HTTP协议 HTTPS = HTTP + SSL/TLS 二.对称加密与非对称加密 对称加密:加密和解密使用同一密钥 ...

  2. C++模板类练习题

    题目说明: 编写一个程序,使用类模板对数组元素进行排序,倒置.查找和求和 具有对数组元素进行排序,倒置.查找和求和功能, 然后产生类型实参分别为int型和double型的两个模板类, 分别对整型数组与 ...

  3. Linux基础综合练习

    Linux基本操作综合练习 1.建立用户zhangsan,密码使用明文123456: 命令:useradd -p 123456 zhangsan 解释: 参数 -p 添加明文密码 useradd添加用 ...

  4. Drools简单例子

    转自:http://www.blogjava.net/diggbag/articles/359347.html 1.Drools简单例子 首先是搭建一个可供进行Drools开发的框架.Jboss官方推 ...

  5. 转载----我与CMDB不得不说的故事

    每次读到配置管理相关的书籍时,我总在想:“这些定义很精准,流程也很完整,但这不是真正的难题.”对于一个配置管理者来说,真正的难题不是绘制“庞大而精美”的数据模型,不是设计“全天候.无死角”的管控流程, ...

  6. Django xadmin的使用 (一)

    Django  xadmin的使用 xadmin是django的一个第三方的管理后台实现,它的功能比自带的admin功能更加强大. xadmin项目在github上的地址为:https://githu ...

  7. Oracle在linux中相关设置操作

    set linesize 300;  -- 设置行长度 set pagesize 300; set long 100000; -- 设置输出长度select dbms_metadata.get_ddl ...

  8. sublime 安装插件

    安装Package Control 在安装插件之前,需要让sublime安装Package Control.打开Sublime Text的控制台,快捷键ctrl + ~,在控制台中输入以下代码. im ...

  9. kibana-4.6.3-linux-x86_64.tar.gz的安装(图文详解)(升级)

     前期博客 kibana-4.6.3-linux-x86_64.tar.gz的下载(图文详解) 因为,我的机器情况是如下: 1.上传 [hadoop@master app]$ rz [hadoop@m ...

  10. 杀死 ps grep 出来的所有进程

    ps -ef |grep HouseList_Day |awk