输入输出
文件
创建、读和写文件的能力是许多程序所必需的,你可以通过创建一个file
类的对象来打开一个文件,分别使用file
类的read
、readline
或write
方法来恰当地读写文件。对文件的读写能力依赖于你在打开文件时指定的模式。最后,当你完成对文件的操作的时候,你调用close
方法来告诉Python我们完成了对文件的使用。
>>> f=file(r'E:\222.txt','w') 指定要写入的文件(没有会自动创建) 及 模式 'w':写 'r':读 'a':追加 默认是'r'
>>> str="abcdefgh"
>>> f.write(str)
>>> f.close()
>>> f=file(r'E:\222.txt','r')
>>> while True:
line=f.readline() 该方法返回包括行末换行符的一个完整行
if len(line)==0: 所以,当一个 空的 字符串被返回的时候,即表示文件末已经到达了,于是我们停止循环
break
print line, 在print
语句上使用逗号来消除自动换行
abcdefgh
>>> f.close()
存储器
Python提供一个标准的模块,称为pickle
。使用它你可以在一个文件中储存任何Python对象,之后你又可以把它完整无缺地取出来。这被称为 持久地 储存对象。
还有另一个模块称为cPickle
,它的功能和pickle
模块完全相同,只不过它是用C语言编写的,因此要快得多(比pickle
快1000倍)。
>>> import cPickle as p 使用了import..as
语法。这是一种便利方法,以便于我们可以使用更短的模块名称
>>> a=['a','b','c','d']
>>> f=file(r'E:\333.txt','w')
>>> p.dump(a,f) 调用储存器模块的dump
函数,把对象储存到打开的文件中。这个过程称为 储存
>>> f.close()
>>> f=file(r'E:\333.txt')
>>> a=p.load(f) 使用pickle
模块的load
函数的返回来取回对象。这个过程称为 取储存
>>> print a
['a', 'b', 'c', 'd']
异常
我们把所有可能引发错误的语句放在try
块中,然后在except
从句/块中处理所有的错误和异常。
except
从句可以专门处理单一的错误或异常,或者一组包括在圆括号内的错误/异常。如果没有给出错误或异常的名称,它会处理 所有的 错误和异常。对于每个try
从句,至少都有一个相关联的except
从句。
import sys
try:
s = raw_input('Enter something --> ')
except EOFError:
print '\nWhy did you do an EOF on me?'
sys.exit() # exit the program
except:
print '\nSome error/exception occurred.'
# here, we are not exiting the program
print 'Done'
引发异常
你可以使用raise
语句 引发 异常。你还得指明错误/异常的名称和伴随异常 触发的 异常对象。你可以引发的错误或异常应该分别是一个Error
或Exception
类的直接或间接子类。
class ShortInputException(Exception):
'''A user-defined exception class.'''
def __init__(self, length, atleast):
Exception.__init__(self)
self.length = length
self.atleast = atleast
try:
s = raw_input('Enter something --> ')
if len(s) < 3:
raise ShortInputException(len(s), 3)
# Other work can continue as usual here
except EOFError:
print '\nWhy did you do an EOF on me?'
except ShortInputException, x: x是伴随异常 触发的 异常对象
print 'ShortInputException: The input was of length %d, \
was expecting at least %d' % (x.length, x.atleast)
else:
print 'No exception was raised.'
假如你在读一个文件的时候,希望在无论异常发生与否的情况下都关闭文件,该怎么做呢?这可以使用finally
块来完成。
import time
try:
f = file('poem.txt')
while True: # our usual file-reading idiom
line = f.readline()
if len(line) == 0:
break
time.sleep(2) 每打印一行之前用time.sleep
方法暂停2秒钟
print line,
finally:
f.close()
print 'Cleaning up...closed the file'
Python标准库
Python标准库是随Python附带安装的,它包含大量极其有用的模块。熟悉Python标准库是十分重要的,因为如果你熟悉这些库中的模块,那么你的大多数问题都可以简单快捷地使用它们来解决。
os模块
这个模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Windows下运行。一个例子就是使用os.sep
可以取代操作系统特定的路径分割符。
os.name字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'。
os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径。
os.getenv()和os.putenv()函数分别用来读取和设置环境变量。
os.listdir()返回指定目录下的所有文件和目录名。
os.remove()函数用来删除一个文件。
os.system()函数用来运行shell命令。
os.linesep字符串给出当前平台使用的行终止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。
os.path.split()函数返回一个路径的目录名和文件名。
os.path.isfile()和os.path.isdir()函数分别检验给出的路径是一个文件还是目录。类似地,
os.path.existe()函数用来检验给出的路径是否真地存在。