自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

十個超級Python腳本,生活辦公更高效

開發(fā) 前端
電子郵件頭承載著揭示郵件來源、傳輸路徑和內(nèi)容的重要元數(shù)據(jù)。雖然這些信息默認對收件人隱藏,但可以通過郵件客戶端或特定工具查看。

在這個快節(jié)奏、高效率的時代,掌握時間管理和信息整理的藝術(shù)尤為重要。今天分享一系列Python自動化腳本,幫助提升工作效率和信息處理能力。從時間管理到數(shù)據(jù)整理,從內(nèi)容創(chuàng)作到郵件分析,這些腳本覆蓋了日常工作和生活中的多個方面,助你以更智能、更高效的方式完成任務(wù)。

1.番茄鐘(Pomodura)

番茄工作法是提高生產(chǎn)力的最簡單方法之一。將工作時間劃分為25分鐘的工作段,每段之間用5分鐘的短暫休息來分隔。

這個Python自動化腳本進一步強化了番茄工作法,在計時器結(jié)束時會自動鎖定你的設(shè)備,確保你的休息時間。

import tkinter as tk
import time
import ctypes
import os
from threading import Timer

class PomodoroTimer:
    def __init__(self, root):
        self.root = root
        self.root.title("Pomodoro Timer")
        self.root.geometry("300x200")
        self.time_var = tk.StringVar()
        self.time_var.set("25:00")
        self.running = False
        self.paused = False
        self.remaining_time = 25 * 60  # 25 minutes
        
        self.label = tk.Label(root, textvariable=self.time_var, font=("Helvetica", 48))
        self.label.pack(pady=20)
        
        self.start_button = tk.Button(root, text="Start", command=self.start_timer)
        self.start_button.pack(side=tk.LEFT, padx=10)
        
        self.pause_button = tk.Button(root, text="Pause", command=self.pause_timer)
        self.pause_button.pack(side=tk.LEFT, padx=10)
        
        self.reset_button = tk.Button(root, text="Reset", command=self.reset_timer)
        self.reset_button.pack(side=tk.LEFT, padx=10)
    
    def update_time(self):
        if self.running:
            minutes, seconds = divmod(self.remaining_time, 60)
            self.time_var.set(f"{minutes:02}:{seconds:02}")
            if self.remaining_time > 0:
                self.remaining_time -= 1
                self.root.after(1000, self.update_time)
            else:
                self.running = False
                self.lock_screen()
    
    def start_timer(self):
        if not self.running:
            self.running = True
            self.paused = False
            self.update_time()
    
    def pause_timer(self):
        if self.running:
            self.running = False
            self.paused = True
    
    def reset_timer(self):
        self.running = False
        self.paused = False
        self.remaining_time = 25 * 60
        self.time_var.set("25:00")
    
    def lock_screen(self):
        if os.name == 'nt':  # Windows
            ctypes.windll.user32.LockWorkStation()
        elif os.name == 'posix':  # macOS and Linux
            # 這是一個占位符,因為在macOS/Linux上鎖定屏幕通常需要不同的處理
            # 對于macOS,使用:os.system('/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend')
            # 對于Linux,使用:os.system('gnome-screensaver-command --lock')
            print("Locking screen on macOS/Linux is not implemented in this script.")
    
if __name__ == "__main__":
    root = tk.Tk()
    app = PomodoroTimer(root)
    root.mainloop()

2 今日視野(TodayScope)

這個自動化腳本能夠自動為你匯總當天的頭條新聞、歷史事件和星座運勢,一并呈現(xiàn),一目了然。

import tkinter as tk
from tkinter import ttk
import requests
from bs4 import BeautifulSoup

def get_trending_news():
    """Fetch and return trending news headlines."""
    url = "http://newsapi.org/v2/top-headlines?country=us&apiKey=CREATE_YOUR_OWN"
    page = requests.get(url).json() 
    articles = page["articles"]
    results = [ar["title"] for ar in articles[:10]]
    headlines = "\n".join(f"{i + 1}. {title}" for i, title in enumerate(results))
    return headlines

def get_horoscope(sign_name):
    """Fetch and return horoscope for the specified sign."""
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
    signs = {
        'aries':1, 'taurus':2, 'gemini':3, 'cancer':4,
        'leo':5, 'virgo':6, 'libra':7, 'scorpio':8,
        'sagittarius':9, 'capricorn':10, 'aquarius':11, 'pisces':12
    }
    sign_id = signs.get(sign_name.lower())
    if sign_id is None:
        return "Sign not found."
    
    url = f'https://www.horoscope.com/us/horoscopes/general/horoscope-general-daily-today.aspx?sign={sign_id}'
    res = requests.get(url, headers=headers)
    soup = BeautifulSoup(res.text, 'html.parser')
    try:
        horoscope_text = soup.select('.main-horoscope p')[0].getText().strip().capitalize()
        sign = soup.select('h1')[0].getText().strip().capitalize()
        return f"{sign} Horoscope: {horoscope_text}"
    except:
        return "Could not fetch the horoscope."

def get_history_today():
    """Fetch and return historical events that happened on this day."""
    url = 'https://www.onthisday.com/'
    res = requests.get(url)
    soup = BeautifulSoup(res.text, 'html.parser')
    history_list = soup.select('.event')[:5]  # 限制為5個事件
    
    events = [event.getText().strip() for event in history_list]
    history_text = "\n".join(events)
    return history_text

def show_popup():
    # 從每個函數(shù)獲取信息
    news = get_trending_news()
    horoscope = get_horoscope('aries')  # 將'aries'替換為所需星座
    history = get_history_today()
    
    # 創(chuàng)建主Tkinter窗口
    root = tk.Tk()
    from datetime import datetime
    # 獲取當前日期以顯示在GUI上
    current_date = datetime.now()
    formatted_date = current_date.strftime("%d %b %Y")
    
    root.title(f"Daily Update: {formatted_date}")
    root.geometry("500x600")
    root.configure(bg="#f0f0f5")  # 設(shè)置背景顏色

    # 設(shè)置帶滾動條的畫布
    canvas = tk.Canvas(root, bg="#f0f0f5")
    scrollbar = ttk.Scrollbar(root, orient="vertical", command=canvas.yview)
    scrollable_frame = tk.Frame(canvas, bg="#f0f0f5")
    
    scrollable_frame.bind(
        "<Configure>",
        lambda e: canvas.configure(scrollregion=canvas.bbox("all")))

    canvas.create_window((0, 0), window=scrollable_frame, anchor="nw")
    canvas.configure(yscrollcommand=scrollbar.set)
    
    # 定義畫布、滾動條和顏色
    canvas.pack(side="left", fill="both", expand=True)
    scrollbar.pack(side="right", fill="y")
    header_font = ("Arial", 14, "bold")
    text_font = ("Arial", 12)
    colors_list = ["#E4E0E1","#FFDDC1", "#D4E157", "#81D4FA", "#FFAB91", "#A5D6A7", "#FFF59D", "#CE93D8", "#B39DDB", "#90CAF9", "#FFE082", "#FFCCBC", "#AED581", "#FFE0B2", "#80CBC4", "#F48FB1"]
    section_bg = random.choice(colors_list) 

    # 創(chuàng)建一個部分的函數(shù)
    def create_section(parent, title, content, color):
        frame = tk.Frame(parent, bg=color, pady=10, padx=10)
        frame.pack(fill="x", pady=5, padx=5)
        title_label = tk.Label(frame, text=title, font=header_font, bg=color, fg="#333333")
        title_label.pack(anchor="w", pady=(0, 5))
        content_label = tk.Label(frame, text=content, justify="left", wraplength=450, bg=color, fg="#000000")
        content_label.pack(anchor="w")
        return frame

    # 添加熱門新聞部分
    create_section(scrollable_frame, "Trending News", news, section_bg)
    # 添加星座運勢部分
    create_section(scrollable_frame, "Horoscope", horoscope, section_bg)
    # 添加歷史事件部分
    create_section(scrollable_frame, "On This Day", history, section_bg)
   
    # 在底部添加關(guān)閉按鈕
    close_button = ttk.Button(scrollable_frame, text="Close", command=root.destroy)
    close_button.pack(pady=20)
    root.mainloop()

# 運行腳本并在啟動時顯示彈出窗口
if __name__ == "__main__":
    show_popup()

3.潮流股票(TrendyStocks)

股市里,公眾關(guān)注度往往與股價波動息息相關(guān)。這個自動化腳本能追蹤股票的流行趨勢,幫你捕捉市場熱點,從而做出更精準的投資選擇。它能夠幫助你快速了解哪些股票正受到市場關(guān)注,哪些則不然,是投資研究的得力助手。

#!pip install pytrends
from pytrends.request import TrendReq
import matplotlib.pyplot as plt

# 函數(shù):獲取趨勢數(shù)據(jù)
def get_google_trends_data(keywords, timeframe='today 3-m', geo='US'):
    pytrends = TrendReq(hl='en-US', tz=360)

    # 構(gòu)建請求數(shù)據(jù)
    pytrends.build_payload(keywords, cat=0, timeframe=timeframe, geo=geo, gprop='')

    # 獲取隨時間變化的興趣度數(shù)據(jù)
    interest_over_time_df = pytrends.interest_over_time()

    return interest_over_time_df

# 示例關(guān)鍵詞,與你的文章相關(guān)
STOCKS = ["AMZN", "MSFT", "NVDA", "AAPL", "GOOG"]

# 獲取趨勢數(shù)據(jù)
trends_data = get_google_trends_data(STOCKS)

# 繪制數(shù)據(jù)圖表
plt.figure(figsize=(20, 12))
trends_data.plot(title='Google Trends for STOCKS')
plt.xlabel('Date')
plt.ylabel('Interest Over Time')
plt.show()

4.整潔化(Neatify)

你是否有面對雜亂無章的下載文件夾感到頭疼的時候?是否有急需文件卻找不到的時候?并且嘗試整理卻總是失敗。

這個自動化腳本幾分鐘內(nèi)幫你解決文件管理難題。只需指定路徑,就會自動:

  • 分類整理:按文件擴展名自動分類存放。
  • 去除重復(fù):通過哈希值檢測,刪除重復(fù)文件。
  • 時間排序:根據(jù)文件日期自動歸檔,方便查找。
import os
import shutil
import hashlib
from datetime import datetime

def get_file_hash(file_path):
    """Calculate the SHA-256 hash of a file."""
    with open(file_path, 'rb') as f:
        return hashlib.sha256(f.read()).hexdigest()

def organize_by_date_and_extension(folder_path):
    """Organize files by date, then by extension, and handle duplicates."""
    # 在根目錄創(chuàng)建“Duplicates”文件夾
    duplicates_folder = os.path.join(folder_path, '_Duplicates')
    os.makedirs(duplicates_folder, exist_ok=True)

    # 字典,用于存儲文件哈希值以檢測重復(fù)文件
    file_hashes = {}

    # 遍歷目錄中的所有文件
    all_files = [os.path.join(folder_path, f) for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))]

    for file_path in all_files:
        # 獲取文件的修改日期
        modification_time = os.path.getmtime(file_path)
        modification_date = datetime.fromtimestamp(modification_time).strftime('%Y-%m-%d')

        # 如不存在,則創(chuàng)建修改日期對應(yīng)的文件夾
        date_folder = os.path.join(folder_path, modification_date)
        os.makedirs(date_folder, exist_ok=True)

        # 計算文件哈希值
        file_hash = get_file_hash(file_path)

        # 檢測重復(fù)文件
        if file_hash in file_hashes:
            # 文件是重復(fù)的,移動到“Duplicates”文件夾
            shutil.move(file_path, os.path.join(duplicates_folder, os.path.basename(file_path)))
            print(f"Moved duplicate file {os.path.basename(file_path)} to Duplicates folder.")
        else:
            # 存儲文件哈希值以避免將來的重復(fù)
            file_hashes[file_hash] = file_path

            # 將文件移動到日期文件夾
            new_path = os.path.join(date_folder, os.path.basename(file_path))
            shutil.move(file_path, new_path)

            # 在日期文件夾內(nèi)按擴展名組織文件
            _, extension = os.path.splitext(new_path)
            extension = extension.lower()
            extension_folder = os.path.join(date_folder, extension[1:])  # 從擴展名中去除點
            os.makedirs(extension_folder, exist_ok=True)

            # 將文件移動到其擴展名對應(yīng)的文件夾
            shutil.move(new_path, os.path.join(extension_folder, os.path.basename(new_path)))
            print(f"Moved {os.path.basename(new_path)} to {extension_folder}.")

    print("Files organized by date, extension, and duplicates handled successfully!")

if __name__ == "__main__":
    # 指定要組織整理的目錄
    folder_path = input("Enter the path to the folder to organize: ")
    organize_by_date_and_extension(folder_path)

5.時鐘工作(ClockWork)

時間追蹤是提升效率的關(guān)鍵,幫助我們發(fā)現(xiàn)工作模式、優(yōu)化流程并保持專注。但手動記錄易出錯、打斷工作。這個自動化腳本簡化了流程,自動追蹤任務(wù)時間,實時監(jiān)控并記錄日志,讓你專注于核心工作。

應(yīng)用場景:

  • 時間追蹤器:提高工作效率。
  • 模型訓練追蹤器:優(yōu)化研發(fā)流程。
import tkinter as tk
from tkinter import ttk, messagebox
import csv
import time
from datetime import datetime

class TaskTrackerApp:
    def __init__(self, root):
        self.root = root
        self.root.title("ClockWork: Time Tracking Made Easy")
        self.task_name_var = tk.StringVar()
        self.probable_time_var = tk.IntVar()
        self.start_time = None

        #  UI元素配置
        self.setup_ui()

        # 如果日志文件不存在,則創(chuàng)建
        self.create_log_file()

    def setup_ui(self):
        style = ttk.Style()
        style.configure("TLabel", font=("Helvetica", 12))
        style.configure("TButton", font=("Helvetica", 12, 'bold'), padding=6)

        # UI元素
        ttk.Label(self.root, text="Task Name:", foreground="blue").grid(row=0, column=0, padx=10, pady=10)
        ttk.Entry(self.root, textvariable=self.task_name_var, width=30).grid(row=0, column=1, padx=10, pady=10)
        ttk.Label(self.root, text="Probable Time (minutes):", foreground="blue").grid(row=1, column=0, padx=10, pady=10)
        ttk.Entry(self.root, textvariable=self.probable_time_var, width=30).grid(row=1, column=1, padx=10, pady=10)

        ttk.Button(self.root, text="Start Task", command=self.start_task).grid(row=2, column=0, padx=10, pady=10)
        self.stop_button = ttk.Button(self.root, text="Stop Task", command=self.stop_task, state=tk.DISABLED)
        self.stop_button.grid(row=2, column=1, padx=10, pady=10)

        ttk.Button(self.root, text="Reset", command=self.reset_task).grid(row=3, column=0, padx=10, pady=10)
        ttk.Button(self.root, text="View Time Logs", command=self.view_time_logs).grid(row=3, column=1, padx=10, pady=10)

        self.timer_label = ttk.Label(self.root, text="00:00:00", font=("Helvetica", 18, 'bold'), foreground="green")
        self.timer_label.grid(row=4, column=0, columnspan=2, padx=10, pady=20)

    def create_log_file(self):
        with open("time_log.csv", "a", newline="") as file:
            writer = csv.writer(file)
            if file.tell() == 0:
                writer.writerow(['Task Name', 'Probable Time (minutes)', 'Start Time', 'End Time', 'Time Spent (minutes)', 'Time Difference (minutes)'])

    def start_task(self):
        task_name = self.task_name_var.get()
        if task_name:
            self.start_time = time.time()
            self.start_button.config(state=tk.DISABLED)
            self.stop_button.config(state=tk.NORMAL)
            self.update_timer()

    def stop_task(self):
        self.stop_button.config(state=tk.DISABLED)
        self.start_button.config(state=tk.NORMAL)
        time_spent = round((time.time() - self.start_time) / 60, 2)
        self.log_time(time_spent)

    def update_timer(self):
        if self.start_time:
            time_spent = time.time() - self.start_time
            time_str = time.strftime('%H:%M:%S', time.gmtime(time_spent))
            self.timer_label.config(text=time_str)
            self.root.after(1000, self.update_timer)

    def log_time(self, time_spent):
        end_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        time_diff = round(time_spent - self.probable_time_var.get(), 2)
        with open("time_log.csv", "a", newline="") as file:
            writer = csv.writer(file)
            writer.writerow([self.task_name_var.get(), self.probable_time_var.get(), self.start_time, end_time, time_spent, time_diff])

    def reset_task(self):
        self.task_name_var.set("")
        self.probable_time_var.set("")
        self.timer_label.config(text="00:00:00")
        self.start_button.config(state=tk.NORMAL)
        self.stop_button.config(state=tk.DISABLED)

    def view_time_logs(self):
        try:
            with open("time_log.csv", "r") as file:
                logs = list(csv.reader(file))
            if len(logs) > 1:
                log_window = tk.Toplevel(self.root)
                log_window.title("Time Logs")
                text_area = tk.Text(log_window, height=20, width=120)
                text_area.pack(padx=10, pady=10)
                for log in logs[1:]:
                    task_name, probable_time, start_time, end_time, time_spent, time_diff = log
                    color = "green" if float(time_diff) < 0 else "red"
                    text_area.insert(tk.END, f"Task: {task_name}, Probable: {probable_time} min, Time Spent: {time_spent} min, Diff: {time_diff} min\n", color)
                text_area.config(state=tk.DISABLED)
                text_area.tag_config("green", foreground="green")
                text_area.tag_config("red", foreground="red")
            else:
                messagebox.showinfo("No Logs", "No task logs found.")
        except Exception as e:
            messagebox.showerror("Error", f"Could not read time logs: {e}")

if __name__ == "__main__":
    root = tk.Tk()
    app = TaskTrackerApp(root)
    root.mainloop()

6.剪貼板翻譯(ClipTranslate)

你是否常因復(fù)制的文本太多而難以追蹤粘貼的內(nèi)容,甚至不小心丟失了重要信息?是否在遇到外語文本時,總是不得不頻繁求助于翻譯工具?

現(xiàn)在,有了這個自動化腳本,你就能輕松管理剪貼板。它不僅能監(jiān)控你復(fù)制的所有文本,還能自動將其翻譯成英文,讓工作更加高效。

import tkinter as tk
from tkinter import ttk
import pyperclip   # 需要安裝Pyperclip
from deep_translator import GoogleTranslator
from langdetect import detect

def detect_and_translate(text):
    try:
        # 檢測文本語言
        detected_language = detect(text)
        print(f"Detected language: {detected_language}")
        if detected_language != 'en':
            translated_text = GoogleTranslator(source=detected_language, target='en').translate(text)
            print(f"Translated text: {translated_text}")
            return translated_text
        else:
            print("The text is already in English.")
            return text
    except Exception as e:
        print(f"Error: {e}")
        return text

## 更新GUI,顯示新復(fù)制的文本
def update_listbox():
    new_item = pyperclip.paste()
    new_item = detect_and_translate(new_item)
    if new_item not in X:
        X.append(new_item)
        listbox.insert(tk.END, new_item)
        listbox.insert(tk.END, "----------------------")
    listbox.yview(tk.END)
    root.after(1000, update_listbox)

## 檢查復(fù)制的內(nèi)容
def copy_to_clipboard(event):
    selected_item = listbox.get(listbox.curselection())
    if selected_item:
        pyperclip.copy(selected_item)

X = []
root = tk.Tk()
root.title("Clipboard Manager")
root.geometry("500x500")
root.configure(bg="#f0f0f0")
frame = tk.Frame(root, bg="#f0f0f0")
frame.pack(padx=10, pady=10)
label = tk.Label(frame, text="Clipboard Contents:", bg="#f0f0f0")
label.grid(row=0, column=0)
scrollbar = tk.Scrollbar(root)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
listbox = tk.Listbox(root, width=150, height=150, yscrollcommand=scrollbar.set)
listbox.pack(pady=10)
scrollbar.config(command=listbox.yview)
update_listbox()
listbox.bind("<Double-Button-1>", copy_to_clipboard)
root.mainloop()

7.視頻轉(zhuǎn)GIF(Video2GIF)

對于內(nèi)容創(chuàng)作者來說,GIF在內(nèi)容表達上具有不可替代的作用。雖然視頻適合分享和展示,但在文章中嵌入GIF往往更為合適。這個自動化腳本能夠?qū)⒁曨l轉(zhuǎn)換成無水印的GIF,僅需幾行代碼即可完成。

from moviepy.editor import VideoFileClip

def convert_video_to_gif(video_path, gif_path, start_time=0, duration=None):
    # 加載視頻剪輯
    clip = VideoFileClip(video_path)
    
    # 如果指定了時長,則裁剪GIF的視頻片段;否則使用整個視頻
    if duration:
        clip = clip.subclip(start_time, start_time + duration)
    else:
        clip = clip.subclip(start_time, clip.duration)
    
    # 將裁剪的視頻片段寫為GIF
    clip.write_gif(gif_path)
    print(f"GIF saved to {gif_path}")

video_path = "Sample_Video.mp4"  # 視頻文件路徑
gif_path = "output.gif"  #GIF保存路徑
convert_video_to_gif(video_path, gif_path, start_time=0, duration=15)

8.字數(shù)統(tǒng)計(WordCounter)

這個自動化腳本能夠追蹤你每天寫了多少字,還能在達到寫作目標時給予鼓勵。

import pynput
from pynput.keyboard import Key, Listener
from win10toast import ToastNotifier

# 初始化ToastNotifier對象
toaster = ToastNotifier()
keys = []
word_count_session = 0
word_count = 1000  # 累計寫作字數(shù)
target_word_count = 1000  # 每日目標字數(shù)

def on_press(key):
    global word_count_session, keys
    if key == Key.space:
        word_count_session += 1
    elif key == Key.esc:
        return False
    keys.append(key)
    write_file(keys)
    if word_count_session >= 1000:
        session_info()

def session_info():
    global word_count, word_count_session
    word_count += word_count_session
    word_count_session = 0
    if word_count > target_word_count:
        # 提示消息
        message = f"Congrats! You have achieved your {target_word_count} Words Daily Target"
        toaster.show_toast("Counter ??", message, duration=10)

def write_file(keys):
    with open('log.txt', 'w') as f:
        for key in keys:
            if key == Key.space:
                f.write(' ')
            else:
                k = str(key).replace("'", "")
                if k[0:3] == 'Key':
                    pass
                else:
                    f.write(k)

with Listener(on_press=on_press) as listener:
    listener.join()

9.假數(shù)據(jù)填充(FakeFill)

對于數(shù)據(jù)科學家來說,測試模型時需要生成逼真的假數(shù)據(jù)集;對于普通人來說,填寫表格時也需要隨機信息。

這個Python自動化腳本能夠滿足這些需求,快速創(chuàng)建看起來真實的假數(shù)據(jù),非常適合測試、開發(fā)和模擬用途。無論是姓名、電子郵件還是電話號碼,這個工具都能高效地產(chǎn)出樣本數(shù)據(jù)。

import streamlit as st
import pandas as pd
from mimesis import Person, Address
from mimesis.enums import Gender
from io import StringIO

# 可用數(shù)據(jù)生成器字典
generators = {
    "Name": lambda: person.full_name(),
    "Email": lambda: person.email(),
    "Address": lambda: address.address(),
    "Phone Number": lambda: person.telephone(),
    "Job": lambda: person.occupation(),
}

# 生成數(shù)據(jù)的函數(shù)
def generate_data(columns, rows):
    data = {col: [generators[col]() for _ in range(rows)] for col in columns}
    return pd.DataFrame(data)

# Streamlit界面
st.title("Test Data Generator ??")

# 設(shè)置側(cè)邊欄
st.sidebar.header("Data Generation Settings")
selected_columns = st.sidebar.multiselect("Select Columns:", list(generators.keys()))
num_rows = st.sidebar.number_input("Number of Rows:", min_value=1, max_value=1000, value=10)

if st.sidebar.button("Generate Data"):
    if selected_columns:
        person = Person()  # 初始化Mimesis人物提供者
        address = Address()  # 初始化Mimesis地址提供者
        df = generate_data(selected_columns, num_rows)
        
        st.write("### Generated Data")
        st.dataframe(df)
        
        # 將DataFrame轉(zhuǎn)換為CSV并創(chuàng)建下載鏈接
        csv = df.to_csv(index=False)
        st.download_button(label="Download CSV", data=csv, file_name="random_data.csv", mime="text/csv")
    else:
        st.warning("Please select at least one column.")

10.郵件頭偵探(HeaderSpy)

電子郵件頭承載著揭示郵件來源、傳輸路徑和內(nèi)容的重要元數(shù)據(jù)。雖然這些信息默認對收件人隱藏,但可以通過郵件客戶端或特定工具查看。每個郵件頭字段都有其特定功能,對電子郵件系統(tǒng)的順暢運作起著重要作用,它們幫助驗證郵件真實性,提供發(fā)送者信息透明度,并在防止垃圾郵件、驗證身份和解決投遞問題上發(fā)揮著重要作用。

這個自動化腳本能從郵件頭中提取關(guān)鍵信息,助你辨別郵件是否偽造、反彈或有潛在惡意。

import email
import quopri
from email import policy
from email.parser import BytesParser

def parse_email(file_path):
    with open(file_path, 'rb') as file:
        msg = BytesParser(policy=policy.default).parse(file)

    print("From:", msg.get("From", "N/A"))
    print("To:", msg.get("To", "N/A"))
    print("Subject:", msg.get("Subject", "N/A"))
    print("Date:", msg.get("Date", "N/A"))
    print("Message ID:", msg.get("Message-ID", "N/A"))
    print("X-Mailer:", msg.get("X-Mailer", "N/A"))
    # 打印附加信息
    print("\n--- Additional Information ---\n")
    print("SPF:", msg.get("Received-SPF", "N/A"))
    print("DKIM:", msg.get("DKIM-Signature", "N/A"))
    print("DMARC:", msg.get("DMARC-Filter", "N/A"))
    print("SENDERIP:", msg.get("X-Sender-IP", "N/A"))
    print("RETURN PATH:", msg.get("Return-Path", "N/A"))
    print("Reply-To:", msg.get("Reply-To", "N/A"))  
    print('Authentication Results:\n', msg.get('Authentication-Results','N/A'))
    print('Message ID', msg.get('Message-Id','N/A'))

def main():
    email_file_path = "/content/Sample.eml"  ## 郵件文件路徑
    parse_email(email_file_path)
if __name__ == "__main__":
    main()


責任編輯:武曉燕 來源: Python學研大本營
相關(guān)推薦

2024-02-02 18:14:17

IDEA插件開發(fā)

2023-10-07 16:28:01

2024-10-28 19:36:05

2022-05-07 14:08:42

Python自動化腳本

2023-10-29 17:12:26

Python編程

2024-05-20 08:30:00

Python編程

2019-09-26 14:20:27

JavaScript代碼編程語言

2025-01-21 18:07:36

Mac系統(tǒng)代碼

2012-11-08 09:37:45

代碼編程語言

2012-01-17 13:54:02

PHP

2024-04-09 00:00:00

Java代碼片段

2024-06-21 10:46:44

2022-04-20 07:42:08

Python腳本代碼

2022-08-29 14:56:56

Python腳本代碼

2024-09-03 09:44:03

2023-05-29 07:15:52

設(shè)置打印機復(fù)印證件

2023-02-22 16:43:05

Web開發(fā)github

2021-01-27 11:24:00

項目經(jīng)理技術(shù)技能項目管理

2024-11-26 00:41:23

Python編程腳本

2024-07-18 15:08:27

點贊
收藏

51CTO技術(shù)棧公眾號