我的嵌套for循环不适用于我的csv文件

时间:2019-07-06 01:20:36

标签: python python-3.x

我的循环行运行一次,然后停止。我真的不明白发生了什么。该程序应该以t中存在的输入量运行,但事实并非如此。 (注意:名称用\ n分隔)

我从字面上想不出一种方法来完成这项工作。

Python文件

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.popup import Popup
from kivy.uix.label import Label
import csv
from tempfile import NamedTemporaryFile
import shutil
from kivy.properties import ListProperty
class CLabel(Label):
    bgcolor = ListProperty([0,0,0])


class Cp(Screen):

    def signin(self):
        pop = Popup(title='Custom Hours',
                    content=Label(text='Hours Added'),
                    size_hint=(None, None), size=(200, 200))
        pop.open()

    def noUser(self, t):

        content = Label(text='Users: {x} Not Found'.format(x = t))
        pop = Popup(title='Custom Hours',
                    content=content,
                    size_hint=(None, None), size=(400, 200))
        pop.open()



    def check_tutor(self, text1):
        t = text1.split('\n')
        temp = []


        tempfile = NamedTemporaryFile(mode='w', delete=False)

        name_d = False
        sheetrow = 0

        with open('D:\\johnp\\kivy_venv\\tsting\\test.csv', 'r') as fh, tempfile:

            head = {'Position': 'Position', 'Name': 'Name', 'Grade': 'Grade',
                    'School': 'School', 'Tutor\'s Phone': 'Tutor\'s Phone',
                    'Tutor\'s Email': 'Tutor\'s Email', 'Parent\'s Phone': 'Parent\'s Phone',
                    'Parent\'s Email': 'Parent\'s Email', 'Hours': 'Hours'}

            reader = csv.reader(fh)
            headers = next(reader)

            reader1 = csv.DictReader(fh, fieldnames=headers)
            writer = csv.DictWriter(tempfile, fieldnames=headers)
            writer.writerow(head)



            #this is the part I help on
            for item in t:
                for row in reader1:
                    sheetrow += 1
                    if row['Name'] == item.strip():
                        name_d = True
                        try:
                            row['Hours'] = float(row['Hours']) + 0.5
                            self.signin()
                        except ValueError:
                            invalidForm()

                    row = {'Position': row['Position'], 'Name': row['Name'], 'Grade': row['Grade'],
                           'School': row['School'], 'Tutor\'s Phone': row['Tutor\'s Phone'],
                           'Tutor\'s Email': row['Tutor\'s Email'], 'Parent\'s Phone': row['Parent\'s Phone'],
                           'Parent\'s Email': row['Parent\'s Email'], 'Hours': row['Hours']}

                    writer.writerow(row)
                if row['Name'] != item.strip():
                    temp.append(item)

            if name_d == False:
                self.noUser(temp)

        shutil.move(tempfile.name, 'D:\\johnp\\kivy_venv\\tsting\\test.csv')


def invalidForm():
    pop = Popup(title='Invalid Form',
                content=Label(text='Please fill in all inputs with valid information.'),
                size_hint=(None, None), size=(400, 400))
    pop.open()





class WindowManager(ScreenManager):
    pass



kv = Builder.load_file("my1.kv")

sm = WindowManager()

screens = [Cp(name="cp")]
for screen in screens:
    sm.add_widget(screen)

sm.current = "cp"


class MyMainApp(App):
    def build(self):
        return sm


if __name__ == "__main__":
    MyMainApp().run()

Kv文件

<WindowManager>:
    Cp:


<Cp>:
    name: "cp"
    GridLayout:

        cols: 1
        size: root.width/2, root.height/2

        GridLayout:
            cols: 2

            CLabel:
                text: "Enter Names: "
                color: 0,0,0,1
                canvas.before:
                    Color:
                        rgba: 1, 1, 0, 1
                    Rectangle:
                        pos: self.pos
                        size: self.size

            TextInput:
                id: x
                multiline:  True


        Button:
            text: "Add Clean Up Hours"
            on_release:
                root.check_tutor(x.text)

        Button:
            text: "Go Back"
            on_release:
                app.root.current = "other"
                root.manager.transition.direction = "right"

csv文件

Position,Name,Grade,School,Tutor's Phone,Tutor's Email,Parent's Phone,Parent's Email,Hours

Tutor,Bob 1,9,asdasd,123123,sadadds,122112313,3123213213,0.0

Tutor,Bob 2,9,asdasd,123123,sadadds,122112313,3123213213,0.0

Tutor,Bob 3,9,asdasd,123123,sadadds,122112313,3123213213,0.0

编辑:我添加了重现此问题所需的所有必要代码。请帮忙。谢谢。

0 个答案:

没有答案