Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 是否有方法返回并编辑用户输入的信息?_Python 2.7 - Fatal编程技术网

Python 2.7 是否有方法返回并编辑用户输入的信息?

Python 2.7 是否有方法返回并编辑用户输入的信息?,python-2.7,Python 2.7,我有一个用Python2.7编写的简单代码,它会向用户询问某些信息,并将信息导出到.csv文件中。用户输入数据后,是否有办法返回并编辑按enter键后输入的内容?以下是我到目前为止的情况: def writer(): import csv with open('Work_Order_Log.csv', 'a') as f: w=csv. writer(f, quoting=csv.QUOTE_ALL) while (1): Correct=True

我有一个用Python2.7编写的简单代码,它会向用户询问某些信息,并将信息导出到.csv文件中。用户输入数据后,是否有办法返回并编辑按enter键后输入的内容?以下是我到目前为止的情况:

def writer():
import csv

with open('Work_Order_Log.csv', 'a') as f:
    w=csv. writer(f, quoting=csv.QUOTE_ALL)

    while (1):
        Correct=True
        Employee=True
        WorkOrder=True
        Item=True
        Qty=True
        Process=True
        Date=True
        Time=True
        while Correct:
            Correct=False
            Employee=False
            WorkOrder=False
            Item=False
            Qty=False
            Process=False
            Date=False
            Time=False
            Employee=raw_input("1. Enter Your Name:")
            WorkOrder=raw_input("2. Enter The Work Order Number:")
            PartNumber=raw_input("3. Enter The Item Number:")
            Qty=raw_input("4. Enter Quantity:")
            Process=raw_input("5. Enter Process:")
            Date=raw_input("6. Enter Date(mm/dd):")
            Time=raw_input("7. Total Time(hh:mm):")
            needToCorrect=raw_input("Is the last Entry Correct? (If so, type 'y') If not enter the Number of the Field that is incorrect:")
            if needToCorrect=="1":
                Employee=True
            elif needToCorrect=="2":
                WorkOrder=True
            elif needToCorrect=="3":
                Item=True
            elif needToCorrect=="4":
                Qty=True
            elif needToCorrect=="5":
                Process=True
            elif needToCorrect=="6":
                Date=True
            elif needToCorrect=="7":
                Time=True
            w.writerow([Employee,WorkOrder,Item,Process,Qty,Date,Time,Correct])

writer()

在测试代码之后,我发现当我输入错误字段的编号进行更正时,它会在.csv文件中显示它不正确,但仍然会让我通过整个循环来修复错误。这是为什么?

您可以将所有输入放入while块:

while (1):
    Correct = True
    while Correct:
        Correct = False
        Employee=raw_input("Enter Your Name:")
        ...

        needToCorrect=raw_input("Is the last Entry Correct?(y/n):")
        if needToCorrect == "n": 
             Correct = True
    w.writerow([Employee,WorkOrder,PartNumber,Process,Qty,Date,Time,Correct])

然后,如果用户注意到某些内容不正确,则“n”将提示用户返回并重新键入字段。如果您只想更正某些字段,则可以使用类似的、更复杂的方法。

两个问题:是否有方法更改.csv文件中的数据,以及如何进行更改以更正某些字段?1。由于在用户认为正确之前,数据不会写入csv,因此您不必担心去修改.csv文件中的数据。您可以使用类似于
Employee=raw\u input(“1.Name:”)
,从而为每个项目分配一个数字。然后,当您询问所有内容是否正确时,您可以让用户输入需要更改的项目编号,然后将一些变量(如
correct1
)设置为true。
while
块将在更正时转到
:如果更正1:Employee=raw。。。如果更正2:WorkOrder=raw\uu…
,依此类推。您还需要首先将每个
correct(n)
boolean设置为true,然后将它们设置为false。如果希望用户更正多行,则在correct:correct(n)=false中执行
If n。错误:
If needToCorrect=“n”:
您使用赋值而不是相等。如果需要更正==“n”,则应为
@roippi谢谢!每次都会发生…:)除了已被接受的答案所说的之外,我强烈建议您将数据整理好,然后打开并写出文件,而不是在整个过程中保持打开文件句柄。