[英]resolve a statement in Python in order to restart the procedure when an error occurs
我用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): ")
。在第二種情況下(加載單個文本文件)如果數據格式不正確,程序將關閉。
我也希望為單個加載文本文件提供選擇,讓用戶從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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.