输出数据不按计划打印

时间:2016-02-21 23:19:55

标签: csv python-3.x tkinter stdout

我有一段代码,它输入一个输入的数字,搜索CSV并输出该行,但是也打印了原始输入的数字。我需要在我的代码中修改哪些内容才能将其删除?

    def DoASearch():
        self.outputQty.delete(1.0, 'end')
        self.outputDesc.delete(1.0, 'end')
        self.dwgoutputbox.configure(state="normal")
        self.dwgoutputbox.delete(1.0, 'end')
        self.dwgoutputbox.configure(state="disabled")
        try:
            print(int(sonumber.get()))
        except ValueError:
            messagebox.showwarning("OPPS !!", "Please enter a valid Shop Order number.")

        with open("lesspreadsheettest.csv") as csvfile:
            reader = csv.DictReader(csvfile)
            for row in reader:
                result=(row['Shop Order'])
                if sonumber.get() == result:
                    print(row['Part Number'])
                    print(row['Description'])
                    print(row['Quantity'])
                    print(row['Drawings'])
                    print(row['Issue'])

    self.searchbutton = ttk.Button(rootWindow, text="Search", command=DoASearch)
    self.searchbutton.grid(row=1, column=7, sticky=W, padx=3, pady=3)

修改并与下面的代码很好地协作。添加了一些可以忽略的额外重复字段。

def checkcsv():
        with open("lesspreadsheettest.csv") as csvfile:
            reader = csv.DictReader(csvfile)
            for row in reader:
                result=(row['Shop Order'])
                if sonumber.get() == result:
                    descQty=(row['Quantity'])
                    descInfo=(row['Description'])
                    descPN=(row['Part Number'])
                    descDwg1=(row['Drawings1'])
                    descIss1=(row['Issue1'])
                    descDwg2=(row['Drawings2'])
                    descIss2=(row['Issue2'])
                    descDwg3=(row['Drawings3'])
                    descIss3=(row['Issue3'])
                    self.outputQty.insert(INSERT,descQty)
                    self.outputDesc.insert(INSERT,descPN, END," ", END, descInfo)
                    self.dwgoutputbox.insert(INSERT, descDwg1, END, "   ", END, " Issue:  ",END,descIss1,END, "\n")
                    self.dwgoutputbox.insert(INSERT, descDwg2, END, "   ", END, " Issue:  ",END,descIss2,END, "\n")
                    self.dwgoutputbox.insert(INSERT, descDwg3, END, "   ", END, " Issue:  ",END,descIss3,END, "\n")
                    self.outputQty.configure(state="disabled")          
                    self.outputDesc.configure(state="disabled")
                    self.dwgoutputbox.configure(state="disabled")

使用循环的稍微好一点的版本如下:

def checkcsv():
        with open("lesspreadsheettest.csv") as csvfile:
            reader = csv.DictReader(csvfile)
            for row in reader:
                result=(row['Shop Order'])
                if sonumber.get() == result:
                    descQty=(row['Quantity'])
                    descInfo=(row['Description'])
                    descPN=(row['Part Number'])
                    for i in range(1,4):
                        descDwg=(row['Drawings'+ str(i)])
                        descIss=(row['Issue'+ str(i)])
                        self.dwgoutputbox.insert(1.0, descDwg, "dwg", "  Issue: ", "", descIss, "", "\n")
                    self.outputQty.insert(1.0, descQty)
                    self.outputDesc.insert(1.0, descPN, "", ": ", "", descInfo)
                    self.outputQty.configure(state="disabled")          
                    self.outputDesc.configure(state="disabled")
                    self.dwgoutputbox.configure(state="disabled")

1 个答案:

答案 0 :(得分:2)

我建议更改以下行

print(int(sonumber.get()))

进入

int(sonumber.get())

但是,您应该更深入地了解您的代码,以便了解 它所做的事情以及 它做这些事情。