python代码段

Posted on 周二 10 十一月 2015 in 编程语言

Python代码段

[TOC]

下面总结一些日常Python代码段

遍历文件夹

#!Python
import os
def getAllFile(dirPath):
    ret = []
    allsub = os.listdir(dirPath)
    for sub in allsub:
        subPath = "%s/%s" % (dirPath, sub)
        if os.path.isfile(subPath):
            ret.append(subPath)
        if os.path.isdir(subPath):
            ret.extend(getAllFile(subPath))
    return ret

打zip包

#!Python
import zipfile, os

zipPakFile = zipfile.ZipFile(zipflieName, 'w' ,zipfile.ZIP_DEFLATED)
for item in fileList:
    zipPakFile.write(item) 
zipPakFile.close()

删除文件夹

#!Python
import shutil
#True表示即使为空也强制删除,如果不加True, 只能删除空文件夹
shutil.rmtree(dirPath, True) 

创建文件夹

#!Python
if not os.path.isdir(dir): 
    #makedirs和mkdir的区别是,如果父目录不存在,makedirs会创建父目录,而mkdir不会python
    os.makedirs(dir)  

拷贝文件

#!python
import os
import shutil
imageName = os.path.basename(image)
shutil.copy(image, "%s/%s" % (pelicanconf.OUTPUT_PATH, imageName))

按编码转换字符串

    def decode_bytes(byte_str, encoding):
        if len(encoding) > 0:
            return byte_str.decode(encoding)
        else:
            return byte_str

运行命令

    #encoding 为输出格式
    def execute_cmd(cmd, encoding=""):

        print(cmd)

        pipe = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

        #实时读出一些数据
        while pipe.poll() == None:
            line_byte = pipe.stdout.readline()
            print(decode_bytes(line_byte, encoding), end="");

        out = pipe.stdout.read()
        if len(out) > 0:
            print(decode_bytes(out, encoding), end="");

        err = pipe.stderr.read()
        if len(err) > 0:
            raise Exception("execute cmd error:", decode_bytes(err, encoding))