我用Python写了这个语句(用于将程序转换为可执行文件),以便加载文件夹(*.txt)或单个文本文件中的所有文本文件,检查数据格式是否正确(get_parse
和check_header
)并处理数据。如果数据格式不正确,程序要求重启(doit = raw_input("Continue (Y/N)?[Y]: "
)。在第一种情况下(*.txt),当数据格式不正确时(分隔符'。'和第一行出现Header)程序报告错误并从INPUT = raw_input("Input (*.txt): ")
重新启动(如果按下Y)。在第二种情况下(加载单个文本文件),如果数据格式不正确,则程序关闭。
我希望也给单个加载文本文件选择的可能性,让用户从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]:
您的问题仍然不清楚,但我认为您想使用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