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 www.2cto.com

>>> 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函数接受一个通配符并且返回文件的或目录的完整路径与之匹配

摘自 蓝猫的专栏

相关内容

    暂无相关文章

评论关闭