0

我在 Python 中编写了这个语句(用于将程序转换为可执行文件),以便加载文件夹(* .txt)或单个文本文件中的所有文本文件,检查数据格式是否正确(get_parsecheck_header)并处理数据. 如果数据格式不正确,程序要求重新启动 ( doit = raw_input("Continue (Y/N)?[Y]: ")。在第一种情况下(*.txt),当数据格式不正确(分隔符“.”和第一行中存在 Header)时,程序报告错误并从 .restart(如果按 Y)重新启动INPUT = raw_input("Input (*.txt): ")。在第二种情况下(加载单个文本文件),如果数据格式不正确,程序将关闭。

我还希望为单个加载文本文件选择用户重新启动程序的可能性INPUT = raw_input("Input (*.txt): )

while True:
    INPUT = raw_input("Input (*.txt): ")
    if os.path.split(INPUT)[1] == "*.txt":
        file_list = glob.glob(os.path.join(os.path.split(INPUT)[0], '*.txt'))
        for file in file_list:
            file_head, file_tail = os.path.split(file)
            file_root, file_suffix = os.path.splitext(file_tail)
            try:
                parse = get_parse(file)
            except Exception:
                print ValueError("%s has delimiter type not valid" % file_tail)
                raw_input("press any key to exit")
                print "Exiting..."
                break
            if check_header(file):
                print ValueError("%s has an Header" % file_tail)
                raw_input("press any key to exit")
                print "Exiting..."
                break
                # do other stuff
        doit = raw_input("Continue (Y/N)?[Y]: ")
        if doit == 'N'or doit == 'n':
            print "Exiting....."
            break
    else:
        try:
            parse = get_parse(INPUT)
        except Exception:
            print ValueError("Delimiter type not valid")
            raw_input("press any key to exit")
            print "Exiting..."
            break
        if check_header(INPUT):
            print ValueError("Header is not valid")
            raw_input("press any key to exit")
            print "Exiting..."
            break
        # do other stuff
        doit = raw_input("Continue (Y/N)?[Y]: ")
        if doit == 'N'or doit == 'n':
            print "Exiting....."
            break

第二种情况,使用windows的命令提示符是文本文件不正确

Input (*.txt): C:\test.txt
Delimiter type not valid
press any key to exit
Exiting.....

C:\Users\>

在第一种情况下 (*.txt)

Input (*.txt): C:\*.txt
Area1_1.txt has delimiter type not valid
press any key to exit
Exiting...
Continue (Y/N)?[Y]:
4

1 回答 1

1

您的问题仍不清楚,但我认为 您想使用continue而不是 break,如果您的目标是在错误后重新启动循环。此外,您应该以不同的方式处理异常:

<snip>
else:
    try:
        parse = get_parse(INPUT)
    except ValueError:
        print "Delimiter type not valid"
        print "Try again..."
        continue
    if check_header(INPUT):
        print "Header is not valid"
        print "Try again..."
        continue
    # do other stuff
    doit = raw_input("Continue (Y/N)?[Y]: ")
    if doit == 'N'or doit == 'n':
        print "Exiting....."
        break
于 2013-04-07T15:04:09.610 回答