[英]How to Exit/Break Python Automation Script in If Statement (Not inside a loop)
我正在嘗試運行一個程序,但該程序需要讀取配置文件。 此配置文件必須有一個基本目錄,它將從中讀取文件。 配置文件有幾個部分,用於與基本文件不同的子目錄。
最終,如果基本目錄不在配置文件中,我希望程序中斷腳本並返回錯誤消息。
這需要一個 If 語句。 但是 if 語句通常不會破壞腳本。 如何編寫一個 if 語句來破壞 function 從中讀取此配置文件的同時也會破壞腳本? 這個 function 將在另一個 function 內部使用
def process_dirconfig_file(config_file_from_sysarg):
config = ConfigParser()
config.read(config_file_from_sysarg)
dirconfig_file_Pobj = Path(config_file_from_sysarg)
if Path.is_file(dirconfig_file_Pobj):
parseddict = {}
for sect in config.sections():
for k, v in config.items(sect):
# print('{} = {}'.format(k, v))
parseddict[k] = v
print(parseddict)
if ("base_dir" not in parseddict) or (parseddict["base_dir"] == ""):
print(f"{Fore.RED} Error: Your config file is missing 'base directory' for file processing")
elif("archive_dir" not in parseddict) or (parseddict["archive_dir"] == ""):
print(f"{Fore.RED} Error: Your config file is missing 'archive directory' for file processing")
elif ("error_dir" not in parseddict) or (parseddict["error_dir"] == ""):
print(f"{Fore.RED} Error: Your config file is missing 'error directory' for file processing")
elif ("empty_dir" not in parseddict) or (parseddict["empty_dir"] == ""):
print(f"{Fore.RED} Error: Your config file is missing 'empty directory' for file processing")
else:
print(f"{Fore.RED} Error: No directory config file. Please create a config file of directories to be used in processing")
此 function 正在此 function 內部使用:
def odf_history_from_csv_to_dbtable(csvfile_path_list, db_instance):
odfsdict = db_instance['odfs_tester_history']
#table_row = {}
totalresult_list = []
process_dirconfig_file(dirconfig_file)
for csv in csvfile_path_list: # is there a faster way to compare the list of files in archive and history?
if csv not in archivefiles_path_set:
csvhistoryfilelist_to_dbtable(csv, db_instance)
odfscsv_df = pd.read_csv(csv, header=None, names=['ODFS_LOG_FILENAME', 'ODFS_FILE_CREATE_DATETIME', 'LOT', 'TESTER', 'WAFER_SCRIBE'])
odfscsv_df['CSV_FILENAME'] = csv.name #add csvfilename column to existing df
result = odfscsv_df.to_sql('odfs_tester_history', con=odfsdict['engine'], if_exists='append', index=False)
totalresult_list.append(result)
else:
print(csv.name + " is in archive folder already")
#print (totalresult_list)
return totalresult_list
db_instance = dbhandler()
odfs_tabletest_dict = db_instance['odfs_tester_history_files']
您可以使用這樣的結構:(基本異常處理) :
如果有兩種方法:Caller(b) 和 Called(a)
def a(x):
try:
if(x%2==0): raise Exception("Even Integer")
else: raise Exception("Odd Integer")
except Exception as e:
raise Exception(e)
def b():
try:
a(3)
except Exception as e:
print(e)
b()
回答:
Odd Integer
如果我正確理解您的問題,聽起來您應該使用 try/except 而不是 if 語句。 這將嘗試讀取代碼,除非遇到錯誤,在這種情況下它將停止代碼並返回該錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.