python读取目录 文件夹下所有文件 合并excel文件 - Shuang0420/Shuang0420.github.io GitHub Wiki

os主要方法

在Python中,文件操作主要来自os模块,所以先导入os模块

import os

获取目录下所有文件 -- 示例

base_dir = '/Users/sure/RecentTasks/'.decode('utf8')
files = os.listdir(base_dir)
for f in files:
    print f

将RecentTasks目录下所有xlsx文件中的"在线分析明细"表中各条目插入数据库excel(也可以全部合并写入新文件中)

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import os
import MySQLdb
import xlrd
import os
import sys
reload(sys)
sys.setdefaultencoding('utf8')

def readExcel(fname):
    row_list=[]
    sheetname="在线分析明细"
    bk = xlrd.open_workbook(fname.decode('utf8'))
    shxrange = range(bk.nsheets)
    try:
        sh = bk.sheet_by_name(sheetname.decode('utf8'))
    except:
        print "no sheet in %s named Sheet1" % fname
    #获取行数
    nrows = sh.nrows
    #获取列数
    ncols = sh.ncols
    print "nrows %d, ncols %d" % (nrows,ncols)
    #获取第一行第一列数据
    #cell_value = sh.cell_value(1,1)
    #print cell_value

    row_list = []
    #获取各行数据
    for i in range(1,nrows):
        row_data = sh.row_values(i)
        row_list.append(row_data)

    insertIntoLinyun(row_list)

def connectDb():
    global cur,conn
    conn= MySQLdb.connect(
            host='127.0.0.1',
            port = 3306,
            user='root',
            passwd='',
            db ='excel',
            charset='utf8',
            )
    cur = conn.cursor()
    cur.execute("USE excel")


def insertIntoLingyun(row_list):
    for row in row_list:
        if (row[6]=='非业务'):
            continue
        try:
            cur.execute("INSERT IGNORE INTO `Lingyun` VALUES ('" + row[1] + "','"+ row[3] + "','"+ row[4] + "','"+ row[6] + "','" + row[8] + "')")
        except:
           # Rollback in case there is any error
           conn.rollback()
    #如果插入数据量比较大(超过100条),可能会丢失数据(可以execute一次就commit一次 或者 execute100次commit就一次)
    conn.commit()


if __name__=='__main__':
    connectDb()
    base_dir = '/Users/sure/RecentTasks/'.decode('utf8')
    files = os.listdir(base_dir)
    for f in files:
        if f.encode('utf8').endswith('xlsx'):
            print f
            readExcel(f)

os中其它方法

os.listdir(dirname)#列出dirname下的目录和文件
os.getcwd()#获得当前工作目录
os.curdir#返回当前目录('.')
os.chdir(dirname)#改变工作目录到dirname
os.path.isdir(name)#判断name是不是一个目录,name不是目录就返回false
os.path.isfile(name)#判断name是不是一个文件,不存在name也返回false
os.path.exists(name)#判断是否存在文件或目录name
os.path.getsize(name)#获得文件大小,如果name是目录返回0L
os.path.abspath(name)#获得绝对路径
os.path.normpath(path)#规范path字符串形式
os.path.split(name)#分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)
os.path.splitext()#分离文件名与扩展名
os.path.join(path,name)#连接目录与文件名或目录
os.path.basename(path)#返回文件名
os.path.dirname(path)#返回文件路径
os.remove(dir) #dir为要删除的文件夹或者文件路径
os.rmdir(path) #path要删除的目录的路径。需要说明的是,使用os.rmdir删除的目录必须为空目录,否则函数出错。
os.path.getmtime(name) #获取文件的修改时间 
os.stat(path).st_mtime#获取文件的修改时间
os.stat(path).st_ctime #获取文件修改时间
os.path.getctime(name)#获取文件的创建时间

参考链接 http://blog.csdn.net/w122079514/article/details/16864403

⚠️ **GitHub.com Fallback** ⚠️