文件基本操作

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. Navicat use HTTP Tunnel

    Apply OS: Windows, macOS, Linux Apply Navicat Product: Navicat for MySQL, Navicat for PostgreSQL, Na ...

  2. Vue基础知识之指令和生命周期(一)

    优点:轻量易学,灵活. 核心:通过尽可能简单的API来实现响应的数据绑定和组合的视图组件. 1.数据绑定:数据改变,驱动视图的自动更新. 2.视图组件化:把整个网页拆分成一个个区块,每个区块都可以看成 ...

  3. Tkinter place() 方法

    Python GUI - Tkinter place() 方法的使用例子:   这个的几何管理器组织放置在一个特定的位置,在他们的父widget部件. 语法: widget.place( place_ ...

  4. 关于jquery中的parent的认定

    <li><label class='checkbox inline'><input type='checkbox' name='type[]' value='{$item ...

  5. DataMatrix二维条码源码分析检测识别图像位置

    发布时间:2014-10-31 DataMatrix的代码结构和QR码基本相同: 其中Detector的功能还是从原始图像中找出符号码的部分,并且进行透视转换纠正扭曲. 其解码流程与QR码差不多,关键 ...

  6. Bilateral Filtering(双边滤波) for SSAO

    原网址:http://blog.csdn.net/bugrunner/article/details/7170471 1. 简介 图像平滑是一个重要的操作,而且有多种成熟的算法.这里主要简单介绍一下B ...

  7. c++builder 解压缩

    c++builder  解压缩  TZCompressionStream  TZDecompressionStream #include <System.ZLib.hpp> void __ ...

  8. Windows下安装kibana

    1. 下载ElasticSearch https://www.elastic.co/downloads/kibana https://www.elastic.co/downloads/past-rel ...

  9. 如何理解dart的mixin

    mixin翻译出来就是混入的意思 混入,就是一个类可以使用另一个类里的功能比如方法或者属性,其实这个功能并不陌生 ,有点类似c#里的扩展方法,但是并不同于, mixin和implements有着本质的 ...

  10. [iOS]swift之UITableView添加通过xib创建的headerView坑爹问题

    情景是这样的,我UITableView添加了一个HeaderView,这个HeaderView是通过xib创建,是UIView.出来的结果却出乎意料,UITableView的Cell最顶部的几个被He ...