3、防篡改。這個自動化腳本可以幫助你測試任何文件,並識別它是否被篡改。
# 導入hashlib模塊,用於加密哈希功能。
import hashlib
# 導入os模塊,用於操作文件和目錄。
import os
# 定義函數calculate_sha256,計算文件的SHA-256哈希值。
def calculate_sha256(file_path):
sha256 = hashlib.sha256() # 創建一個sha256哈希對象
# 以二進制讀取模式打開文件
with open(file_path, 'rb') as file:
# 讀取文件內容,每次讀取4096字節
for chunk in iter(lambda: file.read(4096), b''):
sha256.update(chunk) # 更新哈希對象的狀態
return sha256.hexdigest() # 返回哈希值的十六進制表示
# 定義函數check_integrity,驗證文件的完整性。
def check_integrity(file_path, expected_checksum):
actual_checksum = calculate_sha256(file_path) # 計算文件的實際SHA-256哈希值
return actual_checksum == expected_checksum # 比較實際哈希值與預期哈希值是否相同
# 如果此腳本被直接運行。
if __name__ == "__main__":
file_path = input("輸入文件的路徑: ") # 獲取用戶輸入的文件路徑
expected_checksum = input("輸入預期的SHA-256哈希值: ") # 獲取用戶輸入的預期SHA-256哈希值
# 檢查文件是否存在
if os.path.isfile(file_path):
# 調用check_integrity函數驗證文件完整性
if check_integrity(file_path, expected_checksum):
print("文件完整性驗證成功: 文件未被篡改。") # 驗證成功
else:
print("文件完整性檢查失敗: 文件可能已被篡改。") # 驗證失敗
else:
print("錯誤: 文件未找到。") # 文件不存在錯誤提示
4、智能交易 這個自動化腳本可以幫助交易者和投資者很好地了解你想投資的任何股票。它使用 Python 的 Prophet 庫,基於從雅虎財經獲取的歷史股票數據來預測近期的股票價格。
# 導入Streamlit庫用於創建Web應用
import streamlit as st
# 導入date用於處理日期
from datetime import date
# 導入yfinance庫,用於從Yahoo Finance獲取股票數據
import yfinance as yf
# 導入Prophet庫,用於進行時間序列預測
from prophet import Prophet
# 導入Prophet的Plotly繪圖接口和Plotly圖形對象
from prophet.plot import plot_plotly
from plotly import graph_objs as go
# 設置預測的起始日期和當前日期
START = "2015-01-01"
TODAY = date.today().strftime("%Y-%m-%d")
# 使用Streamlit創建應用標題
st.title('股票預測應用')
# 設置一個選擇框,讓用戶選擇股票
stocks = ('MSFT', "TSLA", 'GOOG', 'AAPL', "NVDA")
selected_stock = st.selectbox('選擇預測數據集', stocks)
# 創建一個滑動條,讓用戶選擇預測的年數,範圍從1到4年
n_years = st.slider('預測年數:', 1, 4)
period = n_years * 365 # 將年數轉換為天數
# 定義一個緩存函數,用於加載股票數據,避免每次會話重新加載
@st.cache
def load_data(ticker):
data = yf.download(ticker, START, TODAY) # 從Yahoo Finance下載股票數據
data.reset_index(inplace=True) # 重置DataFrame的索引
return data
# 顯示數據加載狀態
data_load_state = st.text('加載數據中...')
data = load_data(selected_stock) # 調用函數加載數據
data_load_state.text('加載數據中... 完成!') # 更新加載狀態
# 顯示原始數據的最後幾行
st.subheader('原始數據')
st.write(data.tail())
# 定義函數,繪製原始數據的開盤和收盤價格
def plot_raw_data():
fig = go.Figure()
fig.add_trace(go.Scatter(x=data['Date'], y=data['Open'], name="股票開盤"))
fig.add_trace(go.Scatter(x=data['Date'], y=data['Close'], name="股票收盤"))
fig.layout.update(title_text='時間序列數據與範圍滑塊', xaxis_rangeslider_visible=True)
st.plotly_chart(fig)
plot_raw_data()
# 使用Prophet進行預測
df_train = data[['Date', 'Close']]
df_train = df_train.rename(columns={"Date": "ds", "Close": "y"})
m = Prophet()
m.fit(df_train)
future = m.make_future_dataframe(periods=period)
forecast = m.predict(future)
# 顯示並繪製預測數據
st.subheader('預測數據')
st.write(forecast.tail())
st.write(f'預測圖表 {n_years} 年')
fig1 = plot_plotly(m, forecast)
st.plotly_chart(fig1)
# 顯示預測組件
st.write("預測組件")
fig2 = m.plot_components(forecast)
st.write(fig2)