python:抄表小程序——如何为每一位用户创建独立的csv文档读取数据

我在尝试开发一个复印机抄表小程序时遇到了如下困难:

想增加一个功能:为每一个甲方用户建立独立的csv文档记录数据。举例:当输入‘张三’的时候,程序生成一个张三的csv文档,记录数据。并且可以通过执行menu()函数实现:1. 查询‘张三’的历史数据 2. 添加新数据 3. 跳出循环-询问是否建立新的用户档案

import csv

with open('wenbo.csv', 'a', newline='',encoding = 'GBK') as csvfile:

    writer = csv.writer(csvfile, dialect='excel')

    header=['甲方全称','机器管理编号', '开始张数黑', '开始张数彩','每月租赁费', '包含张数黑','包含张数彩', '等级一收费黑','等级一收费彩', '等级一区间黑','等级一区间彩', '等级二收费黑','等级二收费彩','等级二区间黑','等级二区间彩']

    writer.writerow(header)

class data():

    def newdatalog(self):

        a = input('请输入甲方全称')

        b = input('请输入机器管理编号')

        c = input('请输入开始张数黑:')

        c = float(c)

        c1 = input('请输入开始张数彩:')

        c1 = float(c1)

        d = input('请输入机器租赁费用')

        e = input('请输入包含张数黑:')

        e = float(e)

        e1 = input('请输入包含张数彩:')

        e1 = float(e1)

        f = input('请输入等级一收费标准黑')

        f = float(f)

        f1= input('请输入等级一收费标准彩')

        f1 = float(f1)

        g = input('请输入区间一最大张数黑')

        g = float(g)

        g1 = input('请输入区间一最大张数彩')

        g1 = float(g1)

        h = input('请输入等级二收费标准黑')

        h = float(h)

        h1= input('请输入等级二收费标准彩')

        h1 = float(h1)

        i = input('请输入等级二最大张数黑')

        i =float(i)

        i1= input('请输入等级二最大张数彩')

        i1 = float(i1)

 

        if i-c-g > 0:

            month1B = (i-e-g-c)*h + g*f

            month1C = (i1-e1-g1-c1)*h1 + g1*f1

        elif i-c-g <= 0:

            month1B = (i-c-e)*f

            month1C = (i1-c1-e1)*f

        print(month1B)

        print(month1C)

 

        with open('wenbo.csv', 'a', newline='',encoding = 'GBK')as csvfile:

            writer = csv.writer(csvfile, dialect='excel')

            writer.writerow([a,b,c,c1,d,e,e1,f,f1,g,g1,h,h1,i,i1,month1B,month1C])

    def checkdata(self):

        with open('wenbo.csv','r',newline='',encoding = 'GBK') as csvfile:

            file_reader = csv.reader(csvfile)

            column1 = []

            column2 = []

            for row in file_reader:

                column1.append(row[2])

                column2.append(row[3])

            print('开始张数黑:',column1)

            print('开始张数彩:',column2)

      

    def menu(self):

        print('欢迎使用抄表小程序,希望我能为您的工作带来便利!')

        while True:

                print('1.查询抄表数据\n2.录入新数据\n3.退出系统\n')

                choice = int(input('请输入数字选择对应的功能:'))

                if choice == 2:

                    self.newdatalog()

                elif choice ==1:

                    self.checkdata()

                elif choice == 3:

                    print('感谢使用!愿你工作顺利,保持愉快好心情!')

                    break

data1 = data()

data1.menu()

 

你需要在类中定义一个变量name,去掉开始csv写入代码,整合到newdatalog()中。示例如下,其他部分自行添加。

import csv

class data:
    def __init__(self,name):
        self.name=name
    def newdatalog(self):

        a = input('请输入甲方全称')

        b = input('请输入机器管理编号')

        c = input('请输入开始张数黑:')

        c = float(c)
        with open(f'{self.name}.csv', 'a', newline='', encoding='GBK') as csvfile:
            writer = csv.writer(csvfile, dialect='excel')

            header = ['甲方全称', '机器管理编号', '开始张数黑']

            writer.writerow(header)

            writer.writerow([a, b, c])

    def checkdata(self):

        with open(f'{self.name}.csv', 'r', newline='', encoding='GBK') as csvfile:

            file_reader = csv.reader(csvfile)

            column1 = []

            column2 = []

            for row in file_reader:

                column1.append(row[1])

                column2.append(row[2])

            print('开始张数黑:', column1)

            print('开始张数彩:', column2)

    def menu(self):

        print('欢迎使用抄表小程序,希望我能为您的工作带来便利!')

        while True:

            print('1.查询抄表数据\n2.录入新数据\n3.退出系统\n')

            choice = int(input('请输入数字选择对应的功能:'))

            if choice == 2:

                self.newdatalog()

            elif choice == 1:

                self.checkdata()

            elif choice == 3:

                print('感谢使用!愿你工作顺利,保持愉快好心情!')

                break

name=input('name: ')
data1 = data(name)
data1.menu()

您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

谢谢!!!