python 通过使用pandas的实现的Excel的批量转换CSV文件的处理

---恢复内容开始---

最近同事在处理文件导入的时候需要把一批文件换成CSV的格式,但是直觉修改后缀是不生效的,而且xlsx和xls的文件没法直接换成CVS的文件,所以找了一下方式,并且自己实现了python的转换方式。代码如下

文件需要导入pandas 还要引入xlrd

代码是基于python3.6的环境。

import pandas as pd
import os

# 读取一个目录里面的所有文件:
def read_path(path):
    dirs = os.listdir(path)
    return dirs

def getpath(dir):
    # pwd = os.getcwd()
    # father_path=os.path.abspath(os.path.dirname(pwd)+os.path.sep+".")
    file_path = '/Users/XXXX/Desktop'#桌面路径地址,地址可以根据自己需要修改
    full_path=file_path+'/'+dir+'/'
    return full_path


#数据源Excel如果有多个sheet,那么则需要一一遍历输出
def xlsdata_to_csv(xlsx_data,tag_path):
    for K, V in xlsx_data.items():
        tag_file = tag_path +  K + '.csv'
        if not V.empty:
            V.to_csv(tag_file, encoding='utf_8_sig')


def main():
    source_path = getpath('test2')#存放excel文件
    tag_path = getpath('test3')#输出csv的文件
    dir = read_path(source_path)
    for i in dir :
        source_file = source_path+i
        xlsx_data = pd.read_excel(source_file, sheet_name=None)
        csv_path = tag_path+i.split('.')[0]#因为文件包含两个.所以分割时候做了特殊处理
        xlsdata_to_csv(xlsx_data,csv_path)

if __name__ == '__main__':

    main()

---恢复内容结束---

最近同事在处理文件导入的时候需要把一批文件换成CSV的格式,但是直觉修改后缀是不生效的,而且xlsx和xls的文件没法直接换成CVS的文件,所以找了一下方式,并且自己实现了python的转换方式。代码如下

文件需要导入pandas 还要引入xlrd

代码是基于python3.6的环境。

import pandas as pd
import os

# 读取一个目录里面的所有文件:
def read_path(path):
    dirs = os.listdir(path)
    return dirs

def getpath(dir):
    # pwd = os.getcwd()
    # father_path=os.path.abspath(os.path.dirname(pwd)+os.path.sep+".")
    file_path = '/Users/XXXX/Desktop'#桌面路径地址,地址可以根据自己需要修改
    full_path=file_path+'/'+dir+'/'
    return full_path


#数据源Excel如果有多个sheet,那么则需要一一遍历输出
def xlsdata_to_csv(xlsx_data,tag_path):
    for K, V in xlsx_data.items():
        tag_file = tag_path +  K + '.csv'
        if not V.empty:
            V.to_csv(tag_file, encoding='utf_8_sig')


def main():
    source_path = getpath('test2')#存放excel文件
    tag_path = getpath('test3')#输出csv的文件
    dir = read_path(source_path)
    for i in dir :
        source_file = source_path+i
        xlsx_data = pd.read_excel(source_file, sheet_name=None)
        csv_path = tag_path+i.split('.x')[0]#因为文件包含两个.所以分割时候做了特殊处理
        xlsdata_to_csv(xlsx_data,csv_path)

if __name__ == '__main__':

    main()
posted @ 2019-08-06 16:19  往事亦如风~  阅读(...)  评论(... 编辑 收藏