python-3.x - 我怎样才能使这段代码不那么多余
问题描述
大部分代码对我来说似乎是多余的,我想知道它是否可以简化。以下是我认为可以简化的几个关键地方。
1-所有 5 个循环的错误异常都相同
2-最后 3 个部分,构造线程,启动线程并等待它们完成。他们是一种使这部分动态化的方法,所以这 3 个部分可以根据多线程循环的数量增加或减少吗?
这是代码
def write_prices():
for i in tqdm_notebook(range(0,len(stock_ticker.Symbol))):
try:
ticker_df=pd.DataFrame(get_data(np.array(stock_ticker.Symbol)[i]))
ticker_df.to_csv("E:\\Stock Database\\Stock Prices\\%s.txt"%np.array(stock_ticker.Symbol)[i])
except ValueError:
print (" ValueError :%s" %np.array(stock_ticker.Symbol)[i])
except FileNotFoundError:
print (" FileNotFoundError :%s" %np.array(stock_ticker.Symbol)[i])
except KeyError:
print (" KeyError :%s" %np.array(stock_ticker.Symbol)[i])
except IndexError:
print (" IndexError :%s" %np.array(stock_ticker.Symbol)[i])
except NameError:
print (" NameError :%s" %np.array(stock_ticker.Symbol)[i])
except HTTPError:
print (" HTTPError " )
def write_incomes():
for i in tqdm_notebook(range(0,len(stock_ticker.Symbol))):
try:
ticker_df=pd.DataFrame(get_income_statement(np.array(stock_ticker.Symbol)[i]))
ticker_df.to_csv("E:\\Stock Database\\Income Statement\\%s.txt"%np.array(stock_ticker.Symbol)[i])
except ValueError:
print (" ValueError :%s" %np.array(stock_ticker.Symbol)[i])
except FileNotFoundError:
print (" FileNotFoundError :%s" %np.array(stock_ticker.Symbol)[i])
except KeyError:
print (" KeyError :%s" %np.array(stock_ticker.Symbol)[i])
except IndexError:
print (" IndexError :%s" %np.array(stock_ticker.Symbol)[i])
except NameError:
print (" NameError :%s" %np.array(stock_ticker.Symbol)[i])
except HTTPError:
print (" HTTPError " )
def write_balance_sheet():
for i in tqdm_notebook(range(0,len(stock_ticker.Symbol))):
try:
ticker_df=pd.DataFrame(get_balance_sheet(np.array(stock_ticker.Symbol)[i]))
ticker_df.to_csv("E:\\Stock Database\Balance Sheet\\%s.txt"%np.array(stock_ticker.Symbol)[i])
except ValueError:
print (" ValueError :%s" %np.array(stock_ticker.Symbol)[i])
except FileNotFoundError:
print (" FileNotFoundError :%s" %np.array(stock_ticker.Symbol)[i])
except KeyError:
print (" KeyError :%s" %np.array(stock_ticker.Symbol)[i])
except IndexError:
print (" IndexError :%s" %np.array(stock_ticker.Symbol)[i])
except NameError:
print (" NameError :%s" %np.array(stock_ticker.Symbol)[i])
except HTTPError:
print (" HTTPError " )
def write_cash_flow():
for i in tqdm_notebook(range(0,len(stock_ticker.Symbol))):
try:
ticker_df=pd.DataFrame(get_cash_flow(np.array(stock_ticker.Symbol)[i]))
ticker_df.to_csv("E:\\Stock Database\Cash Flow\\%s.txt"%np.array(stock_ticker.Symbol)[i])
except ValueError:
print (" ValueError :%s" %np.array(stock_ticker.Symbol)[i])
except FileNotFoundError:
print (" FileNotFoundError :%s" %np.array(stock_ticker.Symbol)[i])
except KeyError:
print (" KeyError :%s" %np.array(stock_ticker.Symbol)[i])
except IndexError:
print (" IndexError :%s" %np.array(stock_ticker.Symbol)[i])
except NameError:
print (" NameError :%s" %np.array(stock_ticker.Symbol)[i])
except HTTPError:
print (" HTTPError " )
def write_stats():
for i in tqdm_notebook(range(0,len(stock_ticker.Symbol))):
try:
ticker_df=pd.DataFrame(get_stats(np.array(stock_ticker.Symbol)[i]))
ticker_df.to_csv("E:\\Stock Database\Statistics\\%s.txt"%np.array(stock_ticker.Symbol)[i])
except ValueError:
print (" ValueError :%s" %np.array(stock_ticker.Symbol)[i])
except FileNotFoundError:
print (" FileNotFoundError :%s" %np.array(stock_ticker.Symbol)[i])
except KeyError:
print (" KeyError :%s" %np.array(stock_ticker.Symbol)[i])
except IndexError:
print (" IndexError :%s" %np.array(stock_ticker.Symbol)[i])
except NameError:
print (" NameError :%s" %np.array(stock_ticker.Symbol)[i])
except HTTPError:
print (" HTTPError " )
# construct the threads
t1 = threading.Thread(target=write_prices)
t2 = threading.Thread(target=write_incomes)
t3 = threading.Thread(target=write_balance_sheet)
t4 = threading.Thread(target=write_cash_flow)
t5 = threading.Thread(target=write_stats)
# start the threads
[t.start() for t in (t1, t2, t3, t4, t5)]
# wait until they finish
[t.join() for t in (t1, t2, t3, t4, t5)]
解决方案
您的第一个函数可以重写为:
def write_prices():
for i in tqdm_notebook(range(0,len(stock_ticker.Symbol))):
try:
ticker_df=pd.DataFrame(get_data(np.array(stock_ticker.Symbol)[i]))
ticker_df.to_csv("E:\\Stock Database\\Stock Prices\\%s.txt"%np.array(stock_ticker.Symbol)[i])
except (ValueError, FileNotFoundError, KeyError, IndexError, NameError, HTTPError) as e:
print (e, np.array(stock_ticker.Symbol)[i])
推荐阅读
- r - R函数shinyApp不会运行
- android - Android 应用程序在全屏 Activity 上显示对话框时退出全屏
- reactjs - 为什么 toLocaleDateString().trim() 在日期中添加空格?
- javascript - 循环遍历一个 JavaScript 数组,然后获取所有元素并将它们变成一个字符串
- reactjs - React redux 当前用户参数来不及使用
- powershell - 使用存储在变量中的 yaml 运行“kubectl apply”
- java - 如何删除循环双向链表中的节点?
- python - 如何根据python中的通用ID值将2列的垂直pandas表转换为水平表
- r - R中数据帧的图例
- css - 如何显示图标可以用光标悬停