Dive in Python学习笔记六:异常和文件处理

异常处理
Python 使用 try...except 来处理异常,使用 raise 来引发异常。

技巧:异常的用途
在标准Python 库中一个普通的用法就是试着导入一个模块,然后检查是否它能使用。导入一个并不存在的模块将引发一个 ImportError 异常。你可以使用这种方法来定义多级别的功能――依靠在运行时哪个模块是有效的,或支持多种平台 (即平台特定代码被分离到不同的模块中)。

你也能通过创建一个从内置的 Exception 类继承的类定义你自己的异常,然后使用 raise 命令引发你的异常。

一个 try...except 块可以有一条 else 子句,就像 if 语句。如果在 try 块中没有异常引发,然后 else 子句被执行。

与文件对象共事
打开文件
>>>f = open("/music/_singles/kairo.mp3", "rb")
open 方法可以接收三个参数:文件名、模式和缓冲区参数。只有第一个参数 (文件名) 是必须的;其它两个是可选的。

读取文件
>>>f.seek(-128, 2)
>>>tagData = f.read(128)
1. 文件对象的 seek 方法在被打开文件中移动到另一个位置。第二个参数指出第一个参数是什么意思:0 表示移动到一个绝对位置 (从文件起始处算起),1 表示移到一个相对位置 (从当前位置算起),还有 2 表示相对于文件尾的位置。
2. read 方法从被打开文件中读取指定个数的字节,并且返回含有读取数据的字符串。可选参数指定了读取的最大字节数。如果没有指定参数,read 将读到文件末尾。

关闭文件
>>>f.closed 获取文件f的关闭状态
>>>f.close() 关闭文件

写入文件
有两种写入模式:
1. 追加(Append)模式
将数据追加到文件尾
2. 写入模式
将覆盖文件原有内容
如果文件还不存在,任意一种模式都将自动创建文件

for循环
遍历列表
>>>li = ['a','b','c']
>>>for s in li: print(s)

遍历字典
>>> import os
>>> for k, v in os.environ.items():
print("%s=%s" % (k, v))

使用sys.modules
sys.modules 是一个字典,它包含了从 Python 开始运行起,被导入的所有模块。键字就是模块名,键值就是模块对象。

__module__类属性
每个 Python 类都拥有一个内置的类属性 __module__,它定义了这个类的模块的名字。

与目录共事
构造路径
>>>import os
>>> os.path.join("c:\\music\\ap\\", "mahadeva.mp3")
'c:\\music\\ap\\mahadeva.mp3'
说明:os.path 的 join 函数把一个或多个部分路径名连接成一个路径名。
>>> os.path.expanduser("~")
'c:\\Documents and Settings\\mpilgrim\\My Documents'
说明:expanduser 将对使用 ~ 来表示当前用户根目录的路径名进行扩展。

分割路径名
>>> os.path.split("c:\\music\\ap\\mahadeva.mp3")
('c:\\music\\ap', 'mahadeva.mp3')
说明:split 函数对一个全路径名进行分割,返回一个包含路径和文件名的 tuple。

分割文件名和后缀
>>> (shortname, extension) = os.path.splitext('mahadeva.mp3')
>>> shortname
'mahadeva'
>>> extension
'.mp3'
说明:splitext 函数对文件名进行分割,并且返回一个包含了文件名和文件扩展名的 tuple。

列出目录
>>> os.listdir("c:\\music\\_singles\\")
['a_time_long_forgotten_con.mp3', 'hellraiser.mp3','kairo.mp3', 'long_way_home1.mp3', 'sidewinder.mp3', 'spinning.mp3']
说明:listdir 函数接收一个路径名,并返回那个目录的内容的 list。包括文件和文件夹。

>>> import glob
>>> glob.glob('c:\\music\\_singles\\*.mp3')
['c:\\music\\_singles\\a_time_long_forgotten_con.mp3','c:\\music\\_singles\\hellraiser.mp3']
>>> glob.glob('c:\\music\\*\\*.mp3') #获取music目录下所有子目录下的MP3文件
说明:glob函数接受一个通配符并且返回文件的或目录的完整路径与之匹配。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值