个人觉得 Python 越来越实用离不开其强大的模块,框架的支持,像文件模块,命令行模块, django 框架, sk-learning 工具箱等等.这些都让 Python 能够非常方便的处理不同领域的问题.
文件模块
模块支持
1import os 2import shutil
常用函数
1# 获取文件列表 2filenames = os.listdir(dir) 3 4# 拼接文件路径 5os.path.join(dir,filename) 6 7# 获取绝对路径 8os.path.abspath(path) 9 10# 从完整路径中获取目录和文件名 11os.path.dirname(path) 12os.path.basename(path) 13 14# 判断完整路径是否存在 15os.path.exists(path) 16 17# 创建目录 18os.mkdir(dir_path) 19# 创建路径上的所有文件夹 20os.makedirs(dir_path) 21 22# 拷贝文件 23shutil.copy(src,dest)
命令行模块
模块支持
1import commands
常用函数
1# 运行命令,等待结束。返回状态(正常返回是0)和结果。 2(status, output) = commands.getstatusoutput(cmd) 3 4# 不返回状态的执行命令 5output = commands.getoutput(cmd) 6 7# 不关心结果,只要执行即可 8os.system(cmd)
样例代码
1# 给定一个dir路径,运行 'ls -l' 2def listdir(dir): 3 cmd = 'ls -l ' + dir 4 print "Command to run:", cmd ## 易于调试 5 (status, output) = commands.getstatusoutput(cmd) 6 if status: ## 错误情况,打印错误信息并退出 7 sys.stderr.write(output) 8 sys.exit(1) 9 print output ## 否则显示输出结果
异常处理
样例代码
1try: 2 # 打开文件或读取文件出现问题将抛出 IOError 异常. 3 f = open(filename, 'rU') 4 text = f.read() 5 f.close() 6except IOError: 7 # 处理 IOError 异常. 8 sys.stderr.write('problem reading:' + filename) 9# try/except后面的代码将继续执行
网络模块
模块支持
1import urllib
常用函数
1# 返回一个文件 2ufile = urllib.urlopen(url) 3 4# 读取文件信息 5text = ufile.read() 6 7# 获取网络文件meta/type 信息 8info = ufile.info() 9type = info.gettype() 10 11# 获取最初始的url(针对重定向) 12baseurl = ufile.geturl() 13 14# 下载url数据到指定的文件 15urllib.urlretrieve(url,filename) 16 17# 获取完整url 18urlparse.urljoin(baseurl,url)
样例代码
1## 用try/except处理网络异常 2def wget(url): 3 try: 4 ufile = urllib.urlopen(url) 5 if ufile.info().gettype() == 'text/html': 6 print ufile.read() 7 except IOError: 8 print 'problem reading url:', url 9 10wget('http://www.baidu.com') # 一定要加http://
课后练习
- 练习题1: copyspecial.py
- 练习题2: logpuzzle.py