欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Python的一個自動錄入表格的小程序

 更新時間:2020年08月05日 10:13:35   作者:沙漏在下雨  
這篇文章主要介紹了基于Python的一個自動錄入表格的小程序,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

## 幫阿雪寫的一個小程序
---------------------------------------------------------------------------------------------------
上大學的時候,總是會由很多表格需要同學們?nèi)ジ?,尤其是剛開學的那個時候,顯然是很煩躁,
阿雪剛開學的時候,作為班干部,表示有時候剛錄表不是很熟悉經(jīng)常會弄到很晚,甚至還會弄錯,
這就讓我很是觸動,所以想幫她搞一搞,順便增強一下我們的友誼/hhhhhh
---------------------------------------------------------------------------------------------------

思路:

第一步: 信息還是要填的,以往是同學們發(fā)給班委,然后慢慢來搞,但現(xiàn)在不一樣的,我要求同學們把他們要填的信息寫在記事本里面,內(nèi)容之間用中文逗號隔開,然后在發(fā)給我就行。

第二步: 阿雪只要做的事情是把每個小朋友發(fā)的txt文本點擊下載就行了,這個顯然很簡單的事情。

第三步: QQ個人接受的文件一般都會在 (FileRecv)這個文件夾內(nèi),每個朋友QQ存放的位置不一樣我這里就不詳細說明了,我自己存放的位置是:(r'D://qq//qq文檔//‘我的qq號'/FileRecv//) 我們把這個路徑就姑且叫做qq_path吧!這個路徑我們需要事先寫入代碼內(nèi),我這里定義的函數(shù)是copy_file()內(nèi):具體思想對了就行。

第四步: 整個程序沒啥操作難度,根據(jù)提示填入指令就行,都是批量處理,函數(shù)中我設置了時間間隔,我個人感覺這樣能讓程序有個停頓感,更友好一點吧。

函數(shù)庫:

  1. os庫: 用于創(chuàng)建文件夾,修改路徑,確定路徑,文件遍歷等操作
  2. csv庫: 用于表格的錄入time庫: 用于程序停頓感
  3. pandas庫: 用于csv和xlsx格式之間的轉(zhuǎn)換
  4. shutil庫: 用于文件的復制

復制函數(shù):把qq接受的文件全部轉(zhuǎn)移到我們指定的位置便于操作

def copy_file(): # 將qq地址下的文本文件轉(zhuǎn)移到文本存放處待用
 qq_path = r'D://qq//qq文檔//qq//FileRecv//' # 文本在qq的位置
 for filename in os.listdir(qq_path):
  txt_path = os.path.join(qq_path, filename) # 拼接這二個地址 進行判斷
  if txt_path[-4:] == '.txt':
   if txt_path[-5:-4] in [str(i) for i in range(10)]:
    # 取后綴判斷 取學號判斷 是否是我們需要的txt
    shutil.copy(txt_path, patht) # 進行復制
    os.remove(txt_path) # 刪除在qq地址的文件 避免下次錄入 文本過多
   elif txt_path[-6:-4] in [str(i) for i in range(10, 66)]: # 班級人數(shù)個人設定
    shutil.copy(txt_path, patht) # 進行復制
    os.remove(txt_path) # 刪除在qq地址的文件 避免下次錄入 文本過多

 return qq_path

信息的錄入:遍歷文件夾,逐一讀入文本,將得到的信息放入列表

def luru():
 # 把文本以學號保存 文本里面信息用中文逗號分隔
 qq_path = copy_file() # 復制文本到patht
 listss = [] # 錄入信息列表
 filenamepath = [] # 文件名稱地址
 pathtxt = r'D://測試文件//文本存放處//'
 for filename in os.listdir(pathtxt): # 遍歷文本存放處所有的文件
  filenamepath.append(os.path.join(pathtxt, filename))
 print("當前目錄{}存放著{}個文件:".format(pathtxt, len(filenamepath)))
 if len(filenamepath) == 0:
  print('請確保文件正確存放在{}處:'.format(qq_path))
 for i in range(len(filenamepath)): # 遍歷這個列表 獲得絕對地址
  with open(filenamepath[i], "r", encoding='utf-8') as fo:
   for j in fo:
    listss.append(j.split(','))

 return listss

在這里我加了一個小判斷,如果錄入文本信息為0,那么可能qq接受信息地址沒有填對,路徑?jīng)]有很好的確定,導致這個bug

表格的錄入:這個就很簡單了,利用os庫和csv庫

def wubiaotou():
 name = input("重命名該表格名稱:")
 with open(pathb + name + ".csv", "a+", newline='') as fo:
  num = input("請輸入表頭,并用中文逗號分隔開:")
  headers = num.split(",")
  # headers = ["國籍","民族","省份"]
  fr_csv = csv.writer(fo)
  fr_csv.writerow(headers)
  fr_csv.writerows(lists)

 pathnamew = pathb + name + '.csv'
 time.sleep(0.5)
 successful(pathnamew)
 time.sleep(2)
 demo()

刪除功能:象征性的寫了一下,為了把功能完善一點。

def del_s(path_, fg):
 os.chdir(path_) # 進入path_存放處地址
 biaonumber = len(os.listdir(path_))
 print("當前目錄下{}存在{}個文件:".format(path_, biaonumber))
 if biaonumber == 0:
  print("無需刪除,當前目錄下存在{}個文件".format(biaonumber))
 else:
  delnum = input("請輸入要刪除的文件名稱,并用中文逗號隔開,若輸入all則全部刪除:").split(",")
  if delnum[0] == 'all': # 當索引第一個為all則刪除全部
   for filename in os.listdir(path_): # 遍歷這個文件夾
    os.remove(os.path.join(path_, filename))
   time.sleep(0.5)
   print("已經(jīng)刪除{}目錄下所有文件!".format(path_))
  else: # 刪除輸入的表格名稱
   for i in range(len(delnum)):
    fn = str(delnum[i]) + fg
    os.remove(os.path.join(path_ + fn))
   time.sleep(0.5)
   print("已經(jīng)刪除{}目錄下{}個文件!".format(path_, len(delnum)))
 time.sleep(2)
 demo()


整個代碼不是很難理解,仔細看看應該都能明白,相信你們,奧力給,干了兄弟們!

全部代碼如下:

# -*- coding : utf-8 -*-
# @Time  : 2020/3/2 18:38
# @author : 沙漏在下雨
# @Software : PyCharm
import os
import csv
import time
import pandas as pd
import shutil

path = r'D://測試文件//'
if not os.path.exists(path): # 創(chuàng)建這個存放文件的大目錄
 os.mkdir(path)

patht = path + "文本存放處//"
if not os.path.exists(patht): # 創(chuàng)建這個存放文本的文件夾
 os.mkdir(patht)

pathb = path + "表格存放處//"
if not os.path.exists(pathb): # 創(chuàng)建這個存放表格的文件夾
 os.mkdir(pathb)


def copy_file(): # 將qq地址下的文本文件轉(zhuǎn)移到文本存放處待用
 qq_path = r'D://qq//qq文檔//qq//FileRecv//' # 文本在qq的位置
 for filename in os.listdir(qq_path):
  txt_path = os.path.join(qq_path, filename) # 拼接這二個地址 進行判斷
  if txt_path[-4:] == '.txt':
   if txt_path[-5:-4] in [str(i) for i in range(10)]:
    # 取后綴判斷 取學號判斷 是否是我們需要的txt
    shutil.copy(txt_path, patht) # 進行復制
    os.remove(txt_path) # 刪除在qq地址的文件 避免下次錄入 文本過多
   elif txt_path[-6:-4] in [str(i) for i in range(10, 66)]:
    shutil.copy(txt_path, patht) # 進行復制
    os.remove(txt_path) # 刪除在qq地址的文件 避免下次錄入 文本過多

 return qq_path


def luru():
 # 把文本以學號保存 文本里面信息用中文逗號分隔
 qq_path = copy_file() # 復制文本到patht
 listss = [] # 錄入信息列表
 filenamepath = [] # 文件名稱地址
 pathtxt = r'D://測試文件//文本存放處//'
 for filename in os.listdir(pathtxt): # 遍歷文本存放處所有的文件
  filenamepath.append(os.path.join(pathtxt, filename))
 print("當前目錄{}存放著{}個文件:".format(pathtxt, len(filenamepath)))
 if len(filenamepath) == 0:
  print('請確保文件正確存放在{}處:'.format(qq_path))
 for i in range(len(filenamepath)): # 遍歷這個列表 獲得絕對地址
  with open(filenamepath[i], "r", encoding='utf-8') as fo:
   for j in fo:
    listss.append(j.split(','))

 return listss


lists = luru()


def youbiaotou():
 print("請將帶有表頭的表格事先放入{}處待用:".format(pathb))
 names = input("請輸入該表格名稱:")
 pathnamey = pathb + names + ".xlsx" # 獲得原xlsx的地址
 # 使用pandas 講 xlsx 轉(zhuǎn)換為 csv 格式 便于后續(xù)操作
 date_xlsx = pd.read_excel(pathnamey, index_col=0)
 pathnamec = pathb + names + '.csv'
 date_xlsx.to_csv(pathnamec, encoding='utf_8_sig') # 防止轉(zhuǎn)換時候編碼錯誤
 with open(pathnamec, "a+", encoding='utf-8', newline='') as fo:
  fw_csv = csv.writer(fo)
  fw_csv.writerows(lists) # 寫入多行
 time.sleep(0.5)
 successful(pathnamec)
 time.sleep(2)
 demo()


def successful(pathname): # 錄入成功標識
 print("表格制作成功!".center(38, '-'))
 print("表格位置:{}".format(pathname))
 print("--" * 22)


def wubiaotou():
 name = input("重命名該表格名稱:")
 with open(pathb + name + ".csv", "a+", newline='') as fo:
  num = input("請輸入表頭,并用中文逗號分隔開:")
  headers = num.split(",")
  # headers = ["國籍","民族","省份"]
  fr_csv = csv.writer(fo)
  fr_csv.writerow(headers)
  fr_csv.writerows(lists)

 pathnamew = pathb + name + '.csv'
 time.sleep(0.5)
 successful(pathnamew)
 time.sleep(2)
 demo()


def helpss(): # 幫助信息
 helptxt = ('說明:\t該程序主要作用是實現(xiàn)簡單的自動錄入表格功能\n\n'
    '格式:\t文本信息寫入記事本并用中文逗號將內(nèi)容隔開,命名規(guī)則為學生學號\n\n'
    '操作:\t只需要事先獲得本臺機器騰訊QQ文件保存地址即(FileRecv地址)'
    '將其事先寫入代碼內(nèi)\n\n'
    '備注:\t程序自動將文本打包放入文本存放處(具體位置:{0})進行后續(xù)操作\n\n'
    '\t若調(diào)用模塊有表頭錄入功能,請事先將待用表格放入({1})處待用\n\n'
    '\t最后表格將放入表格存放處(具體位置:{2})進行查看\n\n'
    '\t同時程序功能還實現(xiàn)了批量刪除文本和表格功能供給選擇\n\n'
    '\t若存在相同名稱表格的不同格式'
    '則優(yōu)先刪除(.csv)格式的表格\n\n'.format(patht, pathb, pathb))
 with open(path + '幫助信息.txt', "w", encoding='utf-8') as fo:
  fo.write(helptxt)
 if os.path.exists(path + '幫助信息.txt'):
  # newname = '幫助信息.txt'
  # os.rename(path+'helptxt.txt',path+newname)
  os.system(path + '幫助信息.txt')

 demo()


def del_s(path_, fg):
 os.chdir(path_) # 進入path_存放處地址
 biaonumber = len(os.listdir(path_))
 print("當前目錄下{}存在{}個文件:".format(path_, biaonumber))
 if biaonumber == 0:
  print("無需刪除,當前目錄下存在{}個文件".format(biaonumber))
 else:
  delnum = input("請輸入要刪除的文件名稱,并用中文逗號隔開,若輸入all則全部刪除:").split(",")
  if delnum[0] == 'all': # 當索引第一個為all則刪除全部
   for filename in os.listdir(path_): # 遍歷這個文件夾
    os.remove(os.path.join(path_, filename))
   time.sleep(0.5)
   print("已經(jīng)刪除{}目錄下所有文件!".format(path_))
  else: # 刪除輸入的表格名稱
   for i in range(len(delnum)):
    fn = str(delnum[i]) + fg
    os.remove(os.path.join(path_ + fn))
   time.sleep(0.5)
   print("已經(jīng)刪除{}目錄下{}個文件!".format(path_, len(delnum)))
 time.sleep(2)
 demo()


def demo(): # 目錄因素
 fix = '-' * 44
 title = '文本錄入表格系統(tǒng)'.center(38, '-')
 helps = '使用說明請輸入數(shù)值 1'.center(40, ' ')
 fit1 = '模板無表頭請輸數(shù)值 2'.center(40, ' ')
 fit2 = '模板有表頭請輸數(shù)值 3'.center(40, ' ')
 del1 = '刪除文本請輸入數(shù)值 4'.center(40, ' ')
 del2 = '刪除表格請輸入數(shù)值 5'.center(40, ' ')
 fix = '-' * 44
 c = ['fix', 'title', 'helps', 'fit1', 'fit2', 'del1', 'del2', 'fix']
 for i in c:
  print('{}'.format(eval(i)))
 control = input("請輸入你的數(shù)值:")
 if control == '1':
  helpss()
 elif control == '2':
  wubiaotou()
 elif control == '3':
  youbiaotou()
 elif control == '4':
  fg = '.txt'
  del_s(patht, fg)
 elif control == '5':
  fg = '.csv'
  del_s(pathb, fg)
 else:
  print("輸入選項錯誤!")


demo()

到此這篇關于基于Python的一個自動錄入表格的小程序的文章就介紹到這了,更多相關基于Python自動錄入表格內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python continue語句實例用法

    Python continue語句實例用法

    在本篇文章里小編給大家整理了關于Python continue語句實例用法,有需要的朋友們可以跟著學習下。
    2020-02-02
  • 淺談python多線程和隊列管理shell程序

    淺談python多線程和隊列管理shell程序

    這篇文章主要給大家簡單介紹了python多線程和隊列管理shell程序的方法和簡單示例,有需要的小伙伴可以參考下。
    2015-08-08
  • python實現(xiàn)用類讀取文件數(shù)據(jù)并計算矩形面積

    python實現(xiàn)用類讀取文件數(shù)據(jù)并計算矩形面積

    今天小編就為大家分享一篇python實現(xiàn)用類讀取文件數(shù)據(jù)并計算矩形面積,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python二叉樹的鏡像轉(zhuǎn)換實現(xiàn)方法示例

    Python二叉樹的鏡像轉(zhuǎn)換實現(xiàn)方法示例

    這篇文章主要介紹了Python二叉樹的鏡像轉(zhuǎn)換實現(xiàn)方法,結(jié)合實例形式分析了二叉樹鏡像轉(zhuǎn)換的原理及Python相關算法實現(xiàn)技巧,需要的朋友可以參考下
    2019-03-03
  • python實現(xiàn)ip代理池功能示例

    python實現(xiàn)ip代理池功能示例

    這篇文章主要介紹了python實現(xiàn)ip代理池功能,結(jié)合實例形式分析了Python IP代理池的實現(xiàn)原理及相關操作技巧,需要的朋友可以參考下
    2019-07-07
  • Python接口自動化?之用例讀取方法總結(jié)

    Python接口自動化?之用例讀取方法總結(jié)

    這篇文章主要介紹了Python接口自動化?之用例讀取方法總結(jié),在軟件測試中,為項目編寫接口自動化用例已成為測試人員常駐的測試工作。本文以python為例,基于筆者曾使用過的三種用例數(shù)據(jù)讀取方法:xlrd、pandas、yaml,下面簡要地介紹下它們的使用方法及簡單分析
    2022-06-06
  • Python獲取數(shù)據(jù)庫數(shù)據(jù)并保存在excel表格中的方法

    Python獲取數(shù)據(jù)庫數(shù)據(jù)并保存在excel表格中的方法

    今天小編就為大家分享一篇Python獲取數(shù)據(jù)庫數(shù)據(jù)并保存在excel表格中的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python中判斷子串存在的性能比較及分析總結(jié)

    Python中判斷子串存在的性能比較及分析總結(jié)

    這篇文章主要給大家總結(jié)介紹了Python中判斷子串存在的性能比較及分析的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Python具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06
  • python清理子進程機制剖析

    python清理子進程機制剖析

    python的機制會自動清理已經(jīng)完成任務的子進程的,下面通過本文給大家分享python清理子進程機制剖析,需要的朋友參考下吧
    2017-11-11
  • Python中import的用法陷阱解決盤點小結(jié)

    Python中import的用法陷阱解決盤點小結(jié)

    這篇文章主要為大家介紹了Python中import的用法陷阱解決盤點小結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10

最新評論