您当前的位置:首页 > 计算机 > 编程开发 > Python

Python3先获取用户想要处理的表格名字,返回文件的全路径地址

时间:12-09来源:作者:点击数:

导入的ExcelUtil包:Python的openpyxl封装实现读取表格数据 openpyxl读取表格数据

#!/usr/bin/env python
# coding=utf-8
# 先获取用户想要处理的表格名字,返回文件的全路径地址
import os
from process_excel import ExcelUtil

class Get_file(object):
    def __init__(self):
        self.path = os.path.dirname(os.getcwd())
        # 获取当前目录下所有文件
        dirlist = os.listdir(self.path)
        print(self.path)
        # 存放所有xlsx格式表格
        self.excel_list = []
        #列表里面是字典,每一组字典就是表格序号和表格名字[{},{}]
        self.company_list = []
        for i in dirlist:
            if os.path.splitext(i)[1] == '.xlsx':
                self.excel_list.append(i)
    def company_info(self):
        # 有表格的情况
        if len(self.excel_list) > 0:
            print("目录下共有以下符合要求的表格:")
            print("*" * 54)
            for j in range(len(self.excel_list)):
                excel_dic = {}
                excel_dic[j+1] = self.excel_list[j]
                self.company_list.append(excel_dic)
                print(excel_dic)
            print("*" * 54)
            while True:
                key_company = input("请输入要上传的表格名称关键字:")
                key_list = []
                value_list = []
                if key_company != "":
                    for company_dic in (self.company_list):
                        # company_dic是一个表格信息字典
                        for value_company in company_dic.values():
                            if key_company in value_company:
                                for key, value in company_dic.items():
                                    # 保存key值
                                    key_list.append(key)
                                    # 保存value值
                                    value_list.append(value)
                    if len(key_list) != 0 :
                        print("====================共%s条相关表格信息==================" % (len(key_list)))
                        print("{:^10}\t{:^23}".format("表格序号", "表格名称"))
                        for i in range(len(key_list)):
                            print("{:^10}\t{:^23}".format(key_list[i], value_list[i]))
                        # 判断开关,如果有表格信息,才会去提示用户输入序号
                        switch = True
                        break
                    else:
                        print("ERROR:未找到相关的表格信息,请重试!")
                # 防止只输入回车键
                else:
                    print("ERROR:输入有误,请重试!")
            print("=" * 54)
            while True:
                if switch:
                    try:
                        ID_key = int(input("请输入相应表格一模一样的序号:"))
                        # 防止用户输入回车
                        if ID_key != "":
                            if ID_key in key_list:
                                num = key_list.index(ID_key)
                                print("即将上传文件:%s"%(value_list[num]))
                                # print(self.path + "/" + value_list[num])
                                file_Path = self.path + "/" + value_list[num]
                                data = ExcelUtil(file_Path).judge_excel()
                                if data[0]['判断值'] == "":
                                    data = self.process_data(file_Path)
                                    # Get_file().company_info()
                                return (self.path + "/" + value_list[num],data)

                            else:
                                print("ERROR:您输入的序号不在以上信息中,请重试!")
                        else:
                            print("ERROR:输入有误,请重试!")
                    except:
                        print("ERROR:输入有误,请重试!")
        else:
            print("目录下未找到符合要求的表格,请核实!")
            # 执行bat文件防止闪退
            input("请按回车键继续...")

    def process_data(self,file_Path):
        data = ExcelUtil(file_Path).judge_excel()
        return data

# 因为先要写入表格数据所以要执行两遍
class process_data(object):
    def __init__(self):
        self.path = os.path.dirname(os.getcwd())
        # 获取当前目录下所有文件
        dirlist = os.listdir(self.path)
        print(self.path)
        # 存放所有xlsx格式表格
        self.excel_list = []
        #列表里面是字典,每一组字典就是表格序号和表格名字[{},{}]
        self.company_list = []
        for i in dirlist:
            if os.path.splitext(i)[1] == '.xlsx':
                self.excel_list.append(i)
    def company_info(self):
        # 有表格的情况
        if len(self.excel_list) > 0:
            print("目录下共有以下符合要求的表格:")
            print("*" * 54)
            for j in range(len(self.excel_list)):
                excel_dic = {}
                excel_dic[j+1] = self.excel_list[j]
                self.company_list.append(excel_dic)
                print(excel_dic)
            print("*" * 54)
            while True:
                key_company = input("请输入要上传的表格名称关键字:")
                key_list = []
                value_list = []
                if key_company != "":
                    for company_dic in (self.company_list):
                        # company_dic是一个表格信息字典
                        for value_company in company_dic.values():
                            if key_company in value_company:
                                for key, value in company_dic.items():
                                    # 保存key值
                                    key_list.append(key)
                                    # 保存value值
                                    value_list.append(value)
                    if len(key_list) != 0 :
                        print("====================共%s条相关表格信息==================" % (len(key_list)))
                        print("{:^10}\t{:^23}".format("表格序号", "表格名称"))
                        for i in range(len(key_list)):
                            print("{:^10}\t{:^23}".format(key_list[i], value_list[i]))
                        # 判断开关,如果有表格信息,才会去提示用户输入序号
                        switch = True
                        break
                    else:
                        print("ERROR:未找到相关的表格信息,请重试!")
                # 防止只输入回车键
                else:
                    print("ERROR:输入有误,请重试!")
            print("=" * 54)
            while True:
                if switch:
                    try:
                        ID_key = int(input("请输入相应表格一模一样的序号:"))
                        # 防止用户输入回车
                        if ID_key != "":
                            if ID_key in key_list:
                                num = key_list.index(ID_key)
                                print("即将上传文件:%s"%(value_list[num]))
                                # print(self.path + "/" + value_list[num])
                                file_Path = self.path + "/" + value_list[num]
                                data = ExcelUtil(file_Path).judge_excel()
                                if data[0]['判断值'] == "":
                                    Get_file().company_info()
                                return (self.path + "/" + value_list[num],data)

                            else:
                                print("ERROR:您输入的序号不在以上信息中,请重试!")
                        else:
                            print("ERROR:输入有误,请重试!")
                    except:
                        print("ERROR:输入有误,请重试!")
        else:
            print("目录下未找到符合要求的表格,请核实!")
            # 执行bat文件防止闪退
            input("请按回车键退出...")
            os._exit(0)

if __name__ =="__main__":
    get_file = Get_file()
    get_file.company_info()

使用:

from get_file import Get_file

# 先调取:获取用户想要处理的表格名字,返回文件的全路径地址方法
filePath,data =  Get_file().company_info()
company_list = []
if filePath:
    for i in range(len(data)):
        company_list.append(data[i]['商家名称'])
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐