日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

最近上班遇到一個新問題,新上線的醫保系統太low,導出數據超過1萬條的時候就導不出來了。逼得只有分為小表格導出,然后需要將這些表格匯總為一個大表格。剛好可以帶大家學習如何利用Python/ target=_blank class=infotextkey>Python快速合并相同的幾個Excel表格。當大家遇到類似問題時候就可以用這個簡單辦法解決問題了。比如有很多單位給你報表,你還在傻傻地一個表一個表的粘貼復制嗎?

我們先來看看效果:

python 用os庫和xlrd、xlwd庫快速合并相同n個Excel文件操作實例

原始導出的文件結果


python 用os庫和xlrd、xlwd庫快速合并相同n個Excel文件操作實例

我導出了9個文件

最后我用Python快速將9個文件合成了一個匯總文件。本文教程給出了n的相同文件合并的方法(不相同文件也可以合并,只是機械地把數據匯總在一個表格中,只需要在參數設置中不設置標題就可以了。)

os庫

  • 路徑操作,使用子庫path,處理文件路徑及信息
  • 進程管理,啟動系統中其他程序
  • 環境參數:獲取系統軟硬件信息等環境參數

path子庫

os.listdir(url)#返回一個對應目錄下所有文件名稱的列表

使用需要引入path庫

import os.path as op

操作

含有

os.path.abspath(path)

返回path在當前系統中的絕對路徑

os.path.normpath(path)

返回統一用""分隔路徑

os.path.relpath(path)

返回當前程序與文件之間的相對路徑

os.path.dirname(path)

返回path中的目錄名稱

os.path.basename(path)

返回path中的最后的文件名稱

os.path.join(path,*paths)

組合path與paths,返回一個路徑字符串

os.path.exists(path)

判斷路徑對應的文件或者目錄是否存在

os.path.isfile(path)

判斷路徑是否指向一個文件

os.path.isdir(path)

判斷路徑是否指向一個目錄

os.path.getatime(path)

返回上一次訪問該路徑的時間

os.path.getmtime(path)

返回路徑對應文件或目錄最近修改時間

os.path.getctime(path)

返回路徑對應文件或目錄創建時間

os.path.getsize(path)

返回路徑對應文件或目錄字節大小

進程管理

執行程序或命令(cmd下的命令)

import os

os.system("c:\windows\System32\calc.exe")
python 用os庫和xlrd、xlwd庫快速合并相同n個Excel文件操作實例

打開系統計算器

import os
#下面的程序可以打開當前目錄下的參數配置文件
os.startfile(r".合并Excel文件參數配置.txt")

環境參數

操作

含有

os.chdir(path)

修改當前程序操作的路徑

os.getcwd()

返回程序的當前路徑

os.getlogin()

獲取當前系統登錄用戶名稱

os.cpu_count()

獲取當前系統cpu數量

os.urandom(n)

獲取n個字節長度的隨機字符串

xlrd庫與xlwt庫

本文使用一下幾個xlrd的操作,這里簡單說明,在基礎學習中不做過多探討。

  • data = xlrd.open_workbook(url) # 文件名以及路徑,如果路徑或者文件名有中文給前面加一個r拜師原生字符。
  • table = data.sheets()[0] # 通過索引順序獲取
  • nrows = table.nrows # 獲取該sheet中的有效行數
  • num = table.row_values(i) # 返回由該行中所有單元格的數據組成的列表

本文使用一下幾個xlrd的操作。

  • wa = xlwt.Workbook() # 創建工作簿
  • b = wa.add_sheet('匯總') # 添加“匯總”工作表
  • b.write(i, j, v) # 寫入數據

本程序需要使用的庫文件

import os
import os.path as op
import xlrd as xlrd
import xlwt as xlwt

本次程序的接口參數

使用text文件作為接口文件,事先定義好3個接口參數(要合并的文件目錄、是否存在標題、合并后生產文件的文件名稱)。下面的備注信息為我設置的接口參數,大家可以根據自己的需要設置

<提示文本>在下面一行配置準備合并的Excel文件目錄:

C:UsersAdministratorDesktop測試目錄

<提示文本>第一行是否為標題行1表示是,0表示否:

1

<提示文本>設置匯總文件的文件名及文件格式:

匯總.xlsx

下面是設置接口參數的Python函數(之前案例多次講解,直接給出代碼很簡單的):

def set_param():
    '''在當前文件目錄下配置參數文件,若文件存在則打開文件,不存在則創建一個參數文件再打開'''
    try:
        f = open(r".合并Excel文件參數配置.txt", "x", encoding="utf-8")
        data = '<提示文本>在下面一行配置準備合并的Excel文件目錄:nC:\Users\Administrator\Desktop\測試目錄n<提示文本>第一行是否為標題行1表示是,0表示否:n0n<提示文本>設置匯總文件的文件名及文件格式:n匯總.xlsx'
        f.write(data)
        f.close()
    except FileExistsError:
        pass
    os.startfile(r".合并Excel文件參數配置.txt")

以上代碼可以檢查python程序目錄下是否有接口文件,如有就打開供用戶修改,沒有就生產一個新的默認接口文件,再打開供用戶修改。

程序獲取配置好的接口參數

def get_param():
    '''獲取用戶配置好的配置文件'''
    param = {}
    f = open(r".合并Excel文件參數配置.txt", "r", encoding="utf-8")
    file_data = f.readlines()
    f.close()
    param["url"] = file_data[1].replace('n', "")
    param["title"] = eval(file_data[3].replace('n', ""))
    param["file_name"] = file_data[5].replace('n', "")
    return param

非常簡單,之前多次分析過,就不再多說了。

本程序的核心程序類型,合并操作

基本思想就是通過os操作獲取目標目錄下的所有文件名列表,再循環遍歷這些文件(需要使用op.join(param["url"], file)來打開完整的具體文件路徑,不懂的可以回頭看看本文上面講述的os庫子庫path的具體操作)

然后通過xlrd庫讀取數據出入二位列表values中

最后通過xlwt庫將values中的數據輸出到需要保持的Excel文件中

以下給出具體的代碼:

def merge_excel(param):
    '''合并同類型的Excel文件'''
    files = os.listdir(param["url"])
    values = []  # 存放獲取的Excel文件內容
    for file in files:
        if file == param["file_name"]: continue  # 不統計與匯總文件同名的文件,避免可能的重復統計
        # 將所有文件的內容都放入values變量中
        url = op.join(param["url"], file)
        data = xlrd.open_workbook(url)
        table = data.sheets()[0]
        nrows = table.nrows
        if param["title"] == 1:
            # 若文件存在標題,把第一個讀取到的文件標題做問所有內容的標題
            if file == files[0]:
                title = table.row_values(0)
                title.Append("數據來源")
                values.append(title)
        for i in range(param["title"], nrows):
            val = table.row_values(i)
            val.append(file)
            values.append(val)
    wa = xlwt.Workbook()  # 創建工作簿
    b = wa.add_sheet('匯總')  # 添加“匯總”工作表
    for i in range(len(values)):
        # 寫入數據
        for j in range(len(values[i])):
            b.write(i, j, values[i][j])
    wa.save(op.join(param["url"], param["file_name"]))
    print("文件合并成功")

為了增強程序互動,設計一個非常簡單的菜單。

這個菜單可以很方便地修改為其他程序的菜單,大家可以看看,非常之簡單

def menu():
    '''打印用戶交互界面,獲取用戶操作'''
    print("合并同類Excel文件".center(48, "*"))
    print("1.配置參數")
    print("2.運行合并程序")
    print("3.打開合并后文件目錄")
    print("4.退出程序")
    print("".center(50, "*"))
    while True:
        try:
            s = eval(input("請輸入操作序號"))
        except:
            s = 0
        if s in [1, 2, 3, 4]:
            return s
        else:
            print('輸入錯誤請重新輸入')

最后就是控制流程主函數了

def main():
    while True:
        m = menu()
        if m == 1:
            set_param()
            input("設置好后按回車繼續")
        elif m == 2:
            param = get_param()
            merge_excel(param)
        elif m == 3:
            try:
                os.startfile(param["url"])
            except:
                print("還沒有獲取到配置參數中的文件路徑,請先運行合并程序,輸入2運行合并程序")
        elif m == 4:
            break

結語

今天終于把最后一篇python基礎的操作寫完了,來頭條寫文章最大的收獲不少一分兩分錢,而是真正的可以鞭策自己主動學習,持續學習。雖然一個上班族有的時候確實很忙,但能夠學習進步、分析知識也比無聊玩手機好很多,感興趣的可以一起討論學習,共同進步。這是全套基礎Python學習筆記的鏈接,貢獻給各位粉絲們,能夠閱讀到這個地方也真心感謝您的支持!

最基礎的python學習筆記(入門級)

 

本文全部代碼

import os
import os.path as op
import xlrd as xlrd
import xlwt as xlwt


def menu():
    '''打印用戶交互界面,獲取用戶操作'''
    print("合并同類Excel文件".center(48, "*"))
    print("1.配置參數")
    print("2.運行合并程序")
    print("3.打開合并后文件目錄")
    print("4.退出程序")
    print("".center(50, "*"))
    while True:
        try:
            s = eval(input("請輸入操作序號"))
        except:
            s = 0
        if s in [1, 2, 3, 4]:
            return s
        else:
            print('輸入錯誤請重新輸入')


def set_param():
    '''在當前文件目錄下配置參數文件,若文件存在則打開文件,不存在則創建一個參數文件再打開'''
    try:
        f = open(r".合并Excel文件參數配置.txt", "x", encoding="utf-8")
        data = '<提示文本>在下面一行配置準備合并的Excel文件目錄:nC:\Users\Administrator\Desktop\測試目錄n<提示文本>第一行是否為標題行1表示是,0表示否:n0n<提示文本>設置匯總文件的文件名及文件格式:n匯總.xlsx'
        f.write(data)
        f.close()
    except FileExistsError:
        pass
    os.startfile(r".合并Excel文件參數配置.txt")


def get_param():
    '''獲取用戶配置好的配置文件'''
    param = {}
    f = open(r".合并Excel文件參數配置.txt", "r", encoding="utf-8")
    file_data = f.readlines()
    f.close()
    param["url"] = file_data[1].replace('n', "")
    param["title"] = eval(file_data[3].replace('n', ""))
    param["file_name"] = file_data[5].replace('n', "")
    return param


def merge_excel(param):
    '''合并同類型的Excel文件'''
    files = os.listdir(param["url"])
    values = []  # 存放獲取的Excel文件內容
    for file in files:
        if file == param["file_name"]: continue  # 不統計與匯總文件同名的文件,避免可能的重復統計
        # 將所有文件的內容都放入values變量中
        url = op.join(param["url"], file)
        data = xlrd.open_workbook(url)
        table = data.sheets()[0]
        nrows = table.nrows
        if param["title"] == 1:
            # 若文件存在標題,把第一個讀取到的文件標題做問所有內容的標題
            if file == files[0]:
                title = table.row_values(0)
                title.append("數據來源")
                values.append(title)
        for i in range(param["title"], nrows):
            val = table.row_values(i)
            val.append(file)
            values.append(val)
    wa = xlwt.Workbook()  # 創建工作簿
    b = wa.add_sheet('匯總')  # 添加“匯總”工作表
    for i in range(len(values)):
        # 寫入數據
        for j in range(len(values[i])):
            b.write(i, j, values[i][j])
    wa.save(op.join(param["url"], param["file_name"]))
    print("文件合并成功")


def main():
    while True:
        m = menu()
        if m == 1:
            set_param()
            input("設置好后按回車繼續")
        elif m == 2:
            param = get_param()
            merge_excel(param)
        elif m == 3:
            try:
                os.startfile(param["url"])
            except:
                print("還沒有獲取到配置參數中的文件路徑,請先運行合并程序,輸入2運行合并程序")
        elif m == 4:
            break


main()

分享到:
標簽:python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定