基于Python的一个自动录入表格的小程序

## 帮阿雪写的一个小程序
---------------------------------------------------------------------------------------------------
上大学的时候,总是会由很多表格需要同学们去搞,尤其是刚开学的那个时候,显然是很烦躁,
阿雪刚开学的时候,作为班干部,表示有时候刚录表不是很熟悉经常会弄到很晚,甚至还会弄错,
这就让我很是触动,所以想帮她搞一搞,顺便增强一下我们的友谊/hhhhhh
---------------------------------------------------------------------------------------------------

思路:

第一步: 信息还是要填的,以往是同学们发给班委,然后慢慢来搞,但现在不一样的,我要求同学们把他们要填的信息写在记事本里面,内容之间用中文逗号隔开,然后在发给我就行。

第二步: 阿雪只要做的事情是把每个小朋友发的txt文本点击下载就行了,这个显然很简单的事情。

第三步: QQ个人接受的文件一般都会在 (FileRecv)这个文件夹内,每个朋友QQ存放的位置不一样我这里就不详细说明了,我自己存放的位置是:(r'D://qq//qq文档//‘我的qq号'/FileRecv//) 我们把这个路径就姑且叫做qq_path吧!这个路径我们需要事先写入代码内,我这里定义的函数是copy_file()内:具体思想对了就行。

第四步: 整个程序没啥操作难度,根据提示填入指令就行,都是批量处理,函数中我设置了时间间隔,我个人感觉这样能让程序有个停顿感,更友好一点吧。

函数库:

  1. os库: 用于创建文件夹,修改路径,确定路径,文件遍历等操作
  2. csv库: 用于表格的录入time库: 用于程序停顿感
  3. pandas库: 用于csv和xlsx格式之间的转换
  4. shutil库: 用于文件的复制

复制函数:把qq接受的文件全部转移到我们指定的位置便于操作

def copy_file(): # 将qq地址下的文本文件转移到文本存放处待用
  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

在这里我加了一个小判断,如果录入文本信息为0,那么可能qq接受信息地址没有填对,路径没有很好的确定,导致这个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("已经删除{}目录下所有文件!".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("已经删除{}目录下{}个文件!".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): # 创建这个存放文件的大目录
  os.mkdir(path)

patht = path + "文本存放处//"
if not os.path.exists(patht): # 创建这个存放文本的文件夹
  os.mkdir(patht)

pathb = path + "表格存放处//"
if not os.path.exists(pathb): # 创建这个存放表格的文件夹
  os.mkdir(pathb)

def copy_file(): # 将qq地址下的文本文件转移到文本存放处待用
  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 转换为 csv 格式 便于后续操作
  date_xlsx = pd.read_excel(pathnamey, index_col=0)
  pathnamec = pathb + names + '.csv'
  date_xlsx.to_csv(pathnamec, encoding='utf_8_sig') # 防止转换时候编码错误
  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该程序主要作用是实现简单的自动录入表格功能\n\n'
        '格式:\t文本信息写入记事本并用中文逗号将内容隔开,命名规则为学生学号\n\n'
        '操作:\t只需要事先获得本台机器腾讯QQ文件保存地址即(FileRecv地址)'
        '将其事先写入代码内\n\n'
        '备注:\t程序自动将文本打包放入文本存放处(具体位置:{0})进行后续操作\n\n'
        '\t若调用模块有表头录入功能,请事先将待用表格放入({1})处待用\n\n'
        '\t最后表格将放入表格存放处(具体位置:{2})进行查看\n\n'
        '\t同时程序功能还实现了批量删除文本和表格功能供给选择\n\n'
        '\t若存在相同名称表格的不同格式'
        '则优先删除(.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("已经删除{}目录下所有文件!".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("已经删除{}目录下{}个文件!".format(path_, len(delnum)))
  time.sleep(2)
  demo()

def demo(): # 目录因素
  fix = '-' * 44
  title = '文本录入表格系统'.center(38, '-')
  helps = '使用说明请输入数值 1'.center(40, ' ')
  fit1 = '模板无表头请输数值 2'.center(40, ' ')
  fit2 = '模板有表头请输数值 3'.center(40, ' ')
  del1 = '删除文本请输入数值 4'.center(40, ' ')
  del2 = '删除表格请输入数值 5'.center(40, ' ')
  fix = '-' * 44
  c = ['fix', 'title', 'helps', 'fit1', 'fit2', 'del1', 'del2', 'fix']
  for i in c:
    print('{}'.format(eval(i)))
  control = input("请输入你的数值:")
  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自动录入表格内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python设置表格边框的具体方法

    安装 xlwings 直接安装用 pip install xlwings,用 anaconda 的,已经内置了,见下图. 导入 xlwings import xlwings as xw 打开 Excel 文件 # 打开存好的 Excelapp = xw.App()  # 设置应用 wb = xw.Book('data/小蜜蜂超市销售报表.xlsx')  # 打开文件ws = wb.sheets['Sheet1']  # 选择表格 注意:要养成良好的习惯,数据文件与程序文件要分开存储,一般数据文件

  • Python使用win32com模块实现数据库表结构自动生成word表格的方法

    本文实例讲述了Python使用win32com模块实现数据库表结构自动生成word表格的方法.分享给大家供大家参考,具体如下: 下载win32模块 下载链接:https://sourceforge.net/projects/pywin32/files/pywin32/ 连接mysql import MySQLdb db_host = "" db_port = 3306 db_name = "" db_user = "" db_pwd = &quo

  • Python3读取和写入excel表格数据的示例代码

    python操作excel主要用到 xlrd 和 xlwt 这两个库,xlrd读取excel表格数据, 支持 xlsx和xls格式的excel表格 :xlwt写入excel表格数据: 一.python读取excel表格数据 1.读取excel表格数据常用操作 import xlrd # 打开excel表格 data_excel=xlrd.open_workbook('data/dataset.xlsx') # 获取所有sheet名称 names=data_excel.sheet_names()

  • Python基于xlutils修改表格内容过程解析

    一.xlutils是什么 是一个提供了许多操作修改excel文件方法的库: 属于python的第三方模块 xlrd库用于读取excel文件中的数据,xlwt库用于将数据写入excel文件,修改用xlutils模块: xlutils库也仅仅是通过复制一个副本进行操作后保存一个新文件,像是xlrd库和xlwt库之间的一座桥梁,需要依赖于xlrd和xlwt两个库 二.xlutils基础及应用 2.1 xlutils模块安装 命令行输入如下,进行联网在线安装 pip install xlutils 2.

  • 如何用python处理excel表格

    openpyxl是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装. 读取Excel文件 需要导入相关函数 from openpyxl import load_workbook # 默认可读写,若有需要可以指定write_only和read_only为True wb = load_workbook('pythontab.xlsx') 默认打开的文件为可读写,若有需要可以指定参数read_only为True. 获取工作表--Sheet # 获得所有s

  • 基于Python的一个自动录入表格的小程序

    ## 帮阿雪写的一个小程序 --------------------------------------------------------------------------------------------------- 上大学的时候,总是会由很多表格需要同学们去搞,尤其是刚开学的那个时候,显然是很烦躁, 阿雪刚开学的时候,作为班干部,表示有时候刚录表不是很熟悉经常会弄到很晚,甚至还会弄错, 这就让我很是触动,所以想帮她搞一搞,顺便增强一下我们的友谊/hhhhhh ------------

  • 基于Python编写一个宝石消消乐小游戏

    目录 开发工具 环境搭建 原理简介 开发工具 python版本:3.6.4 相关模块: pygame:以及一些python自带的模块. 环境搭建 安装python并添加到环境变量,pip安装需要的相关模块即可. 原理简介 游戏规则: 玩家通过鼠标交换相邻的拼图,若交换后水平/竖直方向存在连续三个相同的拼图,则这些拼图消失,玩家得分,同时生成新的拼图以补充消失的部分,否则,交换失败,玩家不得分.玩家需要在规定时间内获取尽可能高的得分. 实现过程: 首先加载一些必要的游戏素材: 加载背景音乐: py

  • 用python基于appium模块开发一个自动收取能量的小助手

    导语 ​ 昨天楼下买东西,超市老板居然让我加他支付宝好友???? 嗯哼!对啦,我也很疑惑来着!! 当时以为是方便下次买东西,哦吼也没多想,早上起来睁着我睡眼惺忪的熊猫眼,完了,我的能量都被偷完了! 对!今天木木子教大家种"树"!大家还记得蚂蚁森林叭,轻轻松松手机上就可以种树了! ​ 正文 本文是基于appium模块开发的自动收取能量的小助手! 参数配置如下: desired_caps = { "platformName": "Android",

  • 基于Python实现定时自动给微信好友发送天气预报

    效果图 from wxpyimport * import requests from datetimeimport datetime import time from apscheduler.schedulers.blockingimport BlockingScheduler#定时框架 bot = Bot(cache_path=True) tuling = Tuling(api_key=你的api')#机器人api def send_weather(location): #准备url地址 pa

  • 用Python写一个自动木马程序

    电脑作为大家日常办公的工具,最怕的一件事情之一就是被偷,当我们的电脑被盗的时候,不仅仅是电脑本身,更重要的是电脑存储的资料都会丢失.如何尽快的找回电脑需要我们想点办法,今天就教大家一个好的技巧,虽说不能百分之百的好用,但是也能够发挥一定的效果. 小编本次是基于Linux下的展示,之所以基于Linux,是因为需要电脑在启动的时候,需要自动启动程序,做到出其不意,原因我会在最后给出. 程序是这样的,程序执行会首先调用笔记本的摄像头,拍摄笔记本面前的照片,然后,会给我们的预设邮箱,发送邮件,提醒我们电

  • 基于Python实现人脸自动戴口罩系统

    1.项目背景 2019年新型冠状病毒感染的肺炎疫情发生以来,牵动人心,举国哀痛,口罩.酒精.消毒液奇货可居. 抢不到口罩,怎么办?作为技术人今天分享如何使用Python实现自动戴口罩系统,来安慰自己,系统效果如下所示: 本系统的实现原理是借助 Dlib模块的Landmark人脸68个关键点检测库轻松识别出人脸五官数据,根据这些数据,确定嘴唇部分的位置数据(48点~67点位置),根据检测到嘴部的尺寸和方向,借助PLL模块调整口罩的尺寸和方向,实现将口罩放在图像的适当位置. 2.页面设计 基于tki

  • 基于Python编写一个B站全自动抽奖的小程序

    目录 导语 开发工具 环境搭建 原理简介 导语 应好友邀请,帮他写了个小程序,功能类似于实时监控自己关注的UP主,如果关注的UP主中有人发布了抽奖的动态,就自动参与这个抽奖.这样就能不错过任何一个可以暴富的机会了.写完之后感觉这个想法还是挺有意思的,于是上来分享一波. 废话不多说,让我们愉快地开始吧~ 开发工具 Python版本:3.7.8 相关模块: DecryptLogin模块: 以及一些python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原

  • 基于Python实现Excel转Markdown表格

    目录 介绍 代码 测试 效果 介绍 Markdown(也简称md)作为一种轻量级标记语言,因其易写易读,效果美观大方,不仅被众多网站使用,也是程序员们做笔记.写文档的首选.但Markdown对表格是实现还是不尽如人意.特别是 不能把现成的Excel表格直接复制成Markdown表格. 我在平时的文档撰写.博客写作中就切身体会到这个痛点.我于是用Python实现了一个自动化工具,用来实现Excel转Markdown表格. 代码 import pandas as pd ​​​​​​​def exce

  • 基于Python制作一个文本翻译器

    translate非标准库是python中可以实现对多种语言进行互相翻译的库,使用时只需要设置目标语言(比如:中文.英文)后,会自动将原始文本翻译成我们需要的目标语言. 使用pip的方式安装translate非标准库. pip install translate 准备好之后进行代码编写过程,实现的方式也比较常规. 输入需要翻译的文本文件路径. path = input('请输入需要翻译的文件路径(.txt):\n') 编写文本文件读取函数,读取文本文件后返回字符串. def read_text(

  • 基于Python编写一个微博抽奖小程序

    目录 导语 开发工具 环境搭建 先睹为快 原理简介 导语 带大家写个微博自动抽奖小程序吧,motivation和之前的B站自动抽奖小程序一样: 不想内卷了,整个B站全自动抽奖的小程序吧,万一不小心暴富了呢~ 废话不多说,让我们愉快地开始吧~ 开发工具 Python版本:3.7.8 相关模块: DecryptLogin模块: DecryptLoginExamples模块: 以及一些python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 先睹为快 首先,

随机推荐