python基础篇之实用工具

 |   

个人觉得 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://
    

课后练习

技术茶话会
< 前一篇 后一篇 >