推荐10 个令人惊叹的 Python 自动化脚本!

/01/ 剪贴板管理器

你是否曾发现自己忙于处理多个文本片段,而忘记了自己复制了什么?有没有想过有一个工具可以记录你一天中复制的所有内容?

这个自动化脚本可以监控你复制的所有内容,将复制的每个文本无缝地存储在一个时尚的图形界面中,这样你就不必在无尽的标签页中搜索,也不会丢失一些有价值的信息。

该自动化脚本利用Pyperclip库的强大功能无缝捕获复制数据,并集成了Tkinter以可视化方式跟踪和管理复制的文本。

 

import tkinter as tk

from tkinter import ttk

import pyperclip


def update_listbox():

    new_item = pyperclip.paste()

    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)


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()
应用
  • 捕捉从各种来源复制的研究笔记并进行分类。

  • 扩展脚本可以捕捉重要的日历事件、提醒事项、密码等。

/02/ 代码质量检查器

每个开发人员都会遇到这样的挫折:在 Python 代码中查找错误,却发现自己迷失在错误的迷宫中。作为开发人员,我们深知编写简洁高效代码的重要性,但手动分析代码质量可能是一项压力巨大的任务。

本自动化脚本利用 Pylint 和 Flake8 Python 软件包对代码质量进行全面审查。将你的代码与编码标准进行比较,并找出逻辑错误。它可确保的代码符合行业最佳实践并保持无错。

 

import os

import subprocess


def analyze_code(directory):

    # List Python files in the directory

    python_files = [file for file in os.listdir(directory) if file.endswith('.py')]


    if not python_files:

        print("No Python files found in the specified directory.")

        return


    # Analyze each Python file using pylint and flake8

    for file in python_files:

        print(f"Analyzing file: {file}")

        file_path = os.path.join(directory, file)


        # Run pylint

        print("\nRunning pylint...")

        pylint_command = f"pylint {file_path}"

        subprocess.run(pylint_command, shell=True)


        # Run flake8

        print("\nRunning flake8...")

        flake8_command = f"flake8 {file_path}"

        subprocess.run(flake8_command, shell=True)


if __name__ == "__main__":

    directory = r"C:\Users\abhay\OneDrive\Desktop\Part7"

    analyze_code(directory)

对一个旧 Python 脚本进行代码质量审查时的输出结果,该脚本通过网络应用程序将文件转换为不同格式

应用
  • 自动代码增强器 - 对该脚本稍作扩展,可用于创建一个 Python 脚本,用于识别代码中的问题并作出相应修改。

  • 自动代码审查。

/03/ 不篡改文件

文件篡改又称数据篡改,是指未经授权故意更改信息,包括破坏、篡改或编辑数据。

全球许多威胁行为者滥用文件篡改技术,在关键系统文件中引入不同的漏洞或后门,从而危及安全性并使未经授权的访问成为可能。

要降低这种风险,关键是要验证文件的完整性,确保它们与原始状态保持一致。这个自动化脚本可以帮助你测试任何文件,并识别其是否被篡改。

 

import hashlib

import os


def calculate_sha256(file_path):

    sha256 = hashlib.sha256()

    with open(file_path, 'rb') as file:

        for chunk in iter(lambda: file.read(4096), b''):

            sha256.update(chunk)

    return sha256.hexdigest()


def check_integrity(file_path, expected_checksum):

    actual_checksum = calculate_sha256(file_path)

    return actual_checksum == expected_checksum


if __name__ == "__main__":

    file_path = input("Enter the path to the file: ")

    expected_checksum = input("Enter the expected SHA-256 checksum: ")


    if os.path.isfile(file_path):

        if check_integrity(file_path, expected_checksum):

            print("File integrity verified: The file has not been tampered with.")

        else:

            print("File integrity check failed: The file may have been tampered with.")

    else:

        print("Error: File not found.")

使用样本 ZIP 文件(未篡改)进行脚本测试

使用样本 ZIP 文件(篡改)进行脚本测试

/04/ 智能交易

交易是指买卖股票、债券、货币、商品或衍生品等金融工具,以获取利润。期刊交易员整天都在查看不同的仪表盘,试图找出买入或卖出的完美决策。

这个自动化脚本可以帮助交易者和投资者很好地了解你愿意投资的任何股票。它利用*****Prophet* Python 库,根据从雅虎财经获取的历史股票数据预测近期股票价格。

 

import streamlit as st

from datetime import date


import yfinance as yf

from prophet import Prophet

from prophet.plot import plot_plotly

from plotly import graph_objs as go


START = "2015-01-01"

TODAY = date.today().strftime("%Y-%m-%d")


st.title('Stock Forecast App')


stocks = ('MSFT',"TSLA",'GOOG', 'AAPL', "NVDA")

selected_stock = st.selectbox('Select dataset for prediction', stocks)


n_years = st.slider('Years of prediction:', 1, 4)

period = n_years * 365



@st.cache

def load_data(ticker):

    data = yf.download(ticker, START, TODAY)

    data.reset_index(inplace=True)

    return data


 

data_load_state = st.text('Loading data...')

data = load_data(selected_stock)

data_load_state.text('Loading data... done!')


st.subheader('Raw data')

st.write(data.tail())


# Plot raw data

def plot_raw_data():

 fig = go.Figure()

 fig.add_trace(go.Scatter(x=data['Date'], y=data['Open'], name="stock_open"))

 fig.add_trace(go.Scatter(x=data['Date'], y=data['Close'], name="stock_close"))

 fig.layout.update(title_text='Time Series data with Rangeslider', xaxis_rangeslider_visible=True)

 st.plotly_chart(fig)

 

plot_raw_data()


# Predict forecast with 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)


# Show and plot forecast

st.subheader('Forecast data')

st.write(forecast.tail())

    

st.write(f'Forecast plot for {n_years} years')

fig1 = plot_plotly(m, forecast)

st.plotly_chart(fig1)


st.write("Forecast components")

fig2 = m.plot_components(forecast)

st.write(fig2)

要运行此程序,首先需要使用 pip 安装 Streamlit、yfinance、prophet 和 plotly python 库。

pip install streamlit prophet yfinance plotly

然后使用命令streamlit run smart_trade.py 运行

"使用我们的 Streamlit 应用程序预测 NVDA 股票" - Nvidia 股票在未来几年似乎会上涨,这证明它是今天值得买入的好股票

应用
  • 算法交易

  • 股票价格比较仪表板

/05/ 自动图像下载器

收集图像数据是计算机视觉项目的关键挑战。正如 Andrew Ng 所说,如果你能收集到大量数据集,那么算法就不重要了。数据对提高模型的性能和准确性起着关键作用。

只需几行代码,这个自动化脚本就能帮助你在几分钟内从网上下载数据。

 

# Importing the necessary module and function

from simple_image_download import simple_image_download as simp 


# Creating a response object

response = simp.simple_image_download


## Keyword

keyword = "Dog"


# Downloading images

try:

    response().download(keyword, 20)

    print("Images downloaded successfully.")

except Exception as e:

    print("An error occurred:", e)

/06/ 端口扫描程序

在计算机网络中,端口是允许不同进程或服务通过网络连接和交换数据的通信端点。端口由数值标识,并与特定协议相关联。

开放端口就像建筑物中的门窗,每个端口都是网站与外部网络通信的潜在入口。然而,在没有采取适当安全措施的情况下开放端口,会使网站容易受到网络攻击。

这个自动化脚本会将网站 URL 作为输入,并检查该网站是否存在任何开放端口。无论你是作为 "红队 "的一员在执行任务,还是在 "蓝队 "中坚守阵地,这个脚本都能为你提供有用的便利工具。

 

import socket

from prettytable import PrettyTable


# Dictionary mapping common ports to vulnerabilities (Top 15)

vulnerabilities = {

    80: "HTTP (Hypertext Transfer Protocol) - Used for unencrypted web traffic",

    443: "HTTPS (HTTP Secure) - Used for encrypted web traffic",

    22: "SSH (Secure Shell) - Used for secure remote access",

    21: "FTP (File Transfer Protocol) - Used for file transfers",

    25: "SMTP (Simple Mail Transfer Protocol) - Used for email transmission",

    23: "Telnet - Used for remote terminal access",

    53: "DNS (Domain Name System) - Used for domain name resolution",

    110: "POP3 (Post Office Protocol version 3) - Used for email retrieval",

    143: "IMAP (Internet Message Access Protocol) - Used for email retrieval",

    3306: "MySQL - Used for MySQL database access",

    3389: "RDP (Remote Desktop Protocol) - Used for remote desktop connections (Windows)",

    8080: "HTTP Alternate - Commonly used as a secondary HTTP port",

    8000: "HTTP Alternate - Commonly used as a secondary HTTP port",

    8443: "HTTPS Alternate - Commonly used as a secondary HTTPS port",

    5900: "VNC (Virtual Network Computing) - Used for remote desktop access",

    # Add more ports and vulnerabilities as needed

}


def display_table(open_ports):

    table = PrettyTable(["Open Port", "Vulnerability"])

    for port in open_ports:

        vulnerability = vulnerabilities.get(port, "No known vulnerabilities associated with common services")

        table.add_row([port, vulnerability])

    print(table)


def scan_top_ports(target):

    open_ports = []

    top_ports = [21, 22, 23, 25, 53, 80, 110, 143, 443, 3306, 3389, 5900, 8000, 8080, 8443]  # Top 15 ports

    for port in top_ports:

        try:

            sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

            sock.settimeout(1)  # Adjust timeout as needed

            result = sock.connect_ex((target, port))

            if result == 0:

                open_ports.append(port)

            sock.close()

        except KeyboardInterrupt:

            sys.exit()

        except socket.error:

            pass

    return open_ports


def main():

    target = input("Enter the website URL or IP address to scan for open ports: ")

    open_ports = scan_top_ports(target)

    if not open_ports:

        print("No open ports found on the target.")

    else:

        print("Open ports and associated vulnerabilities:")

        display_table(open_ports)


if __name__ == "__main__":

    main()

使用脚本识别的 OpenPorts 列表

/07/ 密码管理器

作为一名数字自由职业者,最糟糕的事情之一就是需要记住很多密码,因为每天你都要注册一个新网站。

这个自动化脚本可以帮你管理所有密码,使用不同的加密技术确保密码安全,只有你自己才能访问。

这个脚本最棒的地方在于它是一个网络应用程序,只需稍作改动,你就可以将它部署到云存储上,随时随地访问你的所有密码,而无需担心安全问题。

 

import streamlit as st

import csv

from cryptography.fernet import Fernet

from cryptography.fernet import InvalidToken


# Custom encryption key (hardcoded)  

CUSTOM_ENCRYPTION_KEY = b'u7wGgNdDFefqpr_kGxb8wJf6XRVsRwvb3QgITsD5Ft4='                   ## 如果您打算在共享平台上使用此脚本,请确保将此密钥保存在一个单独的安全文件中。


# Function to encrypt password

def encrypt_password(password):

    cipher_suite = Fernet(CUSTOM_ENCRYPTION_KEY)

    encrypted_password = cipher_suite.encrypt(password.encode())

    return encrypted_password


# Function to decrypt password

def decrypt_password(encrypted_password):

    if isinstance(encrypted_password, bytes):

        try:

            cipher_suite = Fernet(CUSTOM_ENCRYPTION_KEY)

            decrypted_password = cipher_suite.decrypt(encrypted_password)

            return decrypted_password.decode()

        except InvalidToken:

            return "Invalid Token"

    else:

        return None


# Function to save website name and password to CSV file

def save_credentials(website_name, password):

    encrypted_password = encrypt_password(password)

    with open('credentials.csv', 'a', newline='') as csvfile:

        writer = csv.writer(csvfile)

        writer.writerow([website_name, encrypted_password.decode()])  # Ensure storing string representation


# Function to retrieve password from CSV file

def retrieve_password(website_name):

    with open('credentials.csv', 'r') as csvfile:

        reader = csv.reader(csvfile)

        for row in reader:

            if row[0] == website_name:

                encrypted_password = row[1].encode()

                return encrypted_password

    return None


# Streamlit UI

st.title("Password Manager")


# Input fields for website name and password

website_name = st.text_input("Enter website name:")

password = st.text_input("Enter password:", type="password")


# Save button to save website name and password

if st.button("Save"):

    if website_name and password:

        save_credentials(website_name, password)

        st.success("Website name and password saved successfully.")

    else:

        st.error("Please fill in all fields.")


# Retrieve button to retrieve password

if st.checkbox("Retrieve Password"):

    website_name = st.selectbox("Select website name:", options=[""] + [row[0] for row in csv.reader(open('credentials.csv', 'r'))])

    key = st.text_input("Enter Your Encryption Key:", type="password")

    if st.button("Retrieve Password"):

        if key == str(CUSTOM_ENCRYPTION_KEY.decode()):

            if website_name:

                encrypted_password = retrieve_password(website_name)

                if encrypted_password:

                    decrypted_password = decrypt_password(encrypted_password)

                    st.success(f"Password for **{website_name}** -> **{decrypted_password}**")

                else:

                    st.error("Password not found in database.")

        elif key == "":

            pass 

        else:

            st.error("Invalid Encryption Key!!!")

它使用硬编码的自定义密钥进行加密和解密。如果你打算在共享平台上使用此脚本,请确保将此密钥保存在一个单独的安全文件中。

正确的加密密钥

- 错误的加密密钥

/08/ 邮件群发器

电子邮件列表是在线参与的货币,每个订阅者都是您数字部落的重要成员。它们是有效数字营销的心脏。

作为一个有影响力的数字营销者,与你的追随者保持互动非常重要,但手动操作是一项艰巨的工作,而使用相关工具则需要花费大量资金。

这款自动化脚本可利用 Gmail 自带的 SMTP 服务器,在几分钟内批量发送电子邮件,让你可以完全自定义并行使权力。

 

import smtplib

import ssl


# SMTP server details

smtp_server = 'data.STUDIO.com'

smtp_port = 465


# Sender and recipient details

from_address = 'Winzo Shop'

to_address = ['','']     ## Recepients List


# Authentication details

username = ''       ## Sender Email

password = ''       ## Sender Password



# Email message details

subject = '🎉 Exclusive Offer Inside! Get 10% Off Your Next Purchase'

body = '''

'''


# Create an SSL/TLS context

context = ssl.create_default_context()


# Connect to the SMTP server using SSL/TLS

with smtplib.SMTP_SSL(smtp_server, smtp_port, context=context) as server:

    # Enable debugging to print the server's responses

    server.set_debuglevel(1)


    # Login to the SMTP server

    server.login(username, password)


    # Create the email message

    message = f'From: {from_address}\r\nSubject: {subject}\r\nTo: {to_address}\r\n\r\n{body}'

    message = message.encode()  # Convert the message to bytes


    # Send the email

    server.sendmail(from_address, to_address, message)

/09/ Readme.md 生成器

README.md 文件是项目的入口,提供基本信息并吸引访问者进一步探索。它被认为是版本库中最重要的文件之一,但创建起来也相当耗时。

这个自动化脚本可以根据版本库名称、链接和描述等输入信息轻松生成 README.md 文件,从而为您节省大量时间。

 

def generate_markdown_file():

    # Prompting user for inputs

    repository_name = input("\n Enter the name of your GitHub repository: ")

    project_description = input("Enter a short description of your project: ")

    installation_instructions = input("Enter installation instructions for your project: ")

    usage_instructions = input("Enter usage instructions for your project: ")

    contributors = input("Enter the contributors to your project (separated by commas): ")

    license = select_license()


    # Generating badges

    stars_badge = "[![GitHub stars](https://img.shields.io/github/stars/{})](https://github.com/{}/stargazers)".format(repository_name, repository_name)

    forks_badge = "[![GitHub forks](https://img.shields.io/github/forks/{})](https://github.com/{}/network/members)".format(repository_name, repository_name)

    issues_badge = "[![GitHub issues](https://img.shields.io/github/issues/{})](https://github.com/{}/issues)".format(repository_name, repository_name)

    license_badge = "[![GitHub license](https://img.shields.io/github/license/{})](https://github.com/{}/blob/master/LICENSE)".format(repository_name, repository_name)


    # Generating Markdown content

    markdown_content = f"""

    # {repository_name}


    {project_description}


    ## Table of Contents

    - [Installation](#installation)

    - [Usage](#usage)

    - [Contributors](#contributors)

    - [License](#license)

    - [Badges](#badges)

    - [GitHub Repository](#github-repository)


    ## Installation

    ```

    {installation_instructions}

    ```

    ## Usage

    ```

    {usage_instructions}

    ```

    ## Contributors

    {contributors}

    ## License

    This project is licensed under the {license} License - see the [LICENSE](LICENSE) file for details.

    ## Badges

    {stars_badge} {forks_badge} {issues_badge} {license_badge}

    ## GitHub Repository

    [Link to GitHub repository](https://github.com/{repository_name})

    """

    # Writing content to Markdown file

    markdown_file_name = f"{repository_name}_README.md"

    with open(markdown_file_name, "w") as markdown_file:

        markdown_file.write(markdown_content)

    print(f"Markdown file '{markdown_file_name}' generated successfully!")


def select_license():

    licenses = {

        "MIT": "MIT License",

        "Apache": "Apache License 2.0",

        "GPL": "GNU General Public License v3.0",

        # Add more licenses as needed

    }

    print("Select a license for your project:")

    for key, value in licenses.items():

        print(f"{key}: {value}")

    while True:

        selected_license = input("Enter the number corresponding to your selected license: ")

        if selected_license in licenses:

            return licenses[selected_license]

        else:

            print("Invalid input. Please enter a valid license number.")


if __name__ == "__main__":

    generate_markdown_file()

/10/ OrganizeIT 2.0

你的下载文件夹是否一团糟?你是否发现自己在最需要的时候却找不到关键文件?你是否尝试过无数次整理文件夹,但都以失败告终?

这个自动化脚本可以帮你在几分钟内整理好文件夹。你只需指定需要清理的路径,本脚本就会根据文件扩展名自动将所有文件划分到不同的文件夹中。

这还不是全部它还能通过比较文件的哈希值来检测和处理重复文件。

 

import os

import hashlib

import shutil


def get_file_hash(file_path):

    with open(file_path, 'rb') as f:

        return hashlib.sha256(f.read()).hexdigest()


def organize_and_move_duplicates(folder_path):

    # Create a dictionary to store destination folders based on file extensions

    extension_folders = {}


    # Create the "Duplicates" folder if it doesn't exist

    duplicates_folder = os.path.join(folder_path, 'Duplicates')

    os.makedirs(duplicates_folder, exist_ok=True)


    # Create a dictionary to store file hashes

    file_hashes = {}


    # Iterate through files in the folder

    for filename in os.listdir(folder_path):

        file_path = os.path.join(folder_path, filename)

        if os.path.isfile(file_path):

            # Get the file extension

            _, extension = os.path.splitext(filename)

            extension = extension.lower()  # Convert extension to lowercase

            

            # Determine the destination folder

            if extension in extension_folders:

                destination_folder = extension_folders[extension]

            else:

                destination_folder = os.path.join(folder_path, extension[1:])  # Remove the leading dot from the extension

                os.makedirs(destination_folder, exist_ok=True)

                extension_folders[extension] = destination_folder

            

            # Calculate the file hash

            file_hash = get_file_hash(file_path)

            

            # Check for duplicates

            if file_hash in file_hashes:

                # File is a duplicate, move it to the "Duplicates" folder

                shutil.move(file_path, os.path.join(duplicates_folder, filename))

                print(f"Moved duplicate file {filename} to Duplicates folder.")

            else:

                # Store the file hash

                file_hashes[file_hash] = filename

                # Move the file to the destination folder

                shutil.move(file_path, destination_folder)

                print(f"Moved {filename} to {destination_folder}")


if __name__ == "__main__":

    folder_path = input("Enter the path to the folder to organize: ")

    organize_and_move_duplicates(folder_path)

最后感谢每一个认真阅读我文章的人,下方这份完整的软件测试教程已经整理上传完成,需要的朋友们可以文末自行领取:【保证100%免费】

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/894937.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++ 在项目中使用GDB

一&#xff1a;GDB 的 TUI 模式使用 GDB的 TUI &#xff08;Text User Interface&#xff09;模式提供了一种图形化的调试体验&#xff0c;允许在终端中同时显示源代码&#xff0c;寄存器和汇编代码等信息&#xff0c;下面是GDB TUI的基本操作和快捷键 1. 显示源代码窗口&…

【C++】类的默认成员函数:深入剖析与应用(上)

&#x1f600;在上一篇文章中我们初步了解了C的基础概念&#xff0c;现在我们进行对C类的默认成员函数进行更加深入的理解&#xff01; &#x1f449;【C新手入门指南&#xff1a;从基础概念到实践之路】 目录 &#x1f4af;前言 &#x1f4af;构造函数 一、构造函数的定义…

常见TCP/IP协议基础——计算机网络

目录 前言常见协议基础常见协议-基于TCP的应用层协议常见协议-基于UDP的应用层协议常见协议-网络层协议习题自测1.邮件发送协议2.接收邮件协议端口3.建立连接4.层次对应关系5.FTP服务器端口 前言 本笔记为备考软件设计师时的重点知识点笔记&#xff0c;关于常见TCP/IP协议基础…

【飞腾加固服务器】全国产化解决方案:飞腾FT2000+/64核,赋能关键任务保驾护航

在信息安全和自主可控的时代背景下&#xff0c;国产化设备的需求与日俱增&#xff0c;尤其是在国防、航空航天、能源和其他关键行业。高可靠性和极端环境设计的国产加固服务器&#xff0c;搭载强大的飞腾FT2000/64核处理器&#xff0c;全面满足国产自主可控的严苛要求。 性能强…

Python案例小练习——小计算器

文章目录 前言一、代码展示二、运行展示 前言 这是用python实现一个简单的计器。 一、代码展示 def calculate(num1, op, num2):if op "":return float(num1) float(num2)elif op "-":return float(num1) - float(num2)elif op "*":return…

stable diffusion安装ai绘画真人动漫win中文版软件

前言 所有的AI设计工具&#xff0c;安装包、模型和插件&#xff0c;都已经整理好了&#xff0c;&#x1f447;获取~ Stable Diffusion&#xff08;简称SD&#xff09;&#xff0c;是通过数学算法实现文本输入&#xff0c;图像输出的开源软件&#xff01; 引用维基百科&#x…

expect工具

一.expect工具介绍 在写脚本的过程当中不可避免的需要去写交互式命令 那么如何让交互式命令在脚本中自动执行&#xff1f; 使用expect工具 作用&#xff1a;捕获交互式的输出&#xff0c;自动执行交互式命令 如上图所示&#xff0c;可以使用expect工具去捕获交互式命令的提…

什么是大数据分析:定义、优缺点、应用、机遇和风险

大数据分析的概念已经成为我们社会不可或缺的一部分。众多公司和机构已经开发了大数据应用程序&#xff0c;取得了不同程度的成功。社交媒体平台和传感器等技术正在以前所未有的速度生成数据&#xff0c;就像一条装配线。如今&#xff0c;几乎所有东西都是物联网的一部分&#…

[Xshell] Xshell的下载安装使用及连接linux过程 详解(附下载链接)

前言 Xshell.zip 链接&#xff1a;https://pan.quark.cn/s/5d9d1836fafc 提取码&#xff1a;SPn7 安装 下载后解压得到文件 安装路径不要有中文 打开文件 注意&#xff01;360等软件会拦截创建注册表的行为&#xff0c;需要全部允许、同意。或者退出360以后再安装。 在“绿化…

vscode pylance怎么识别通过sys.path.append引入的库

问题 假如我有一个Python项目 - root_path -- moduleA ---- fileA.py -- moduleB ---- fileB.py# fileAimport sys sys.path.append(moduleB)import fileB # vscode pylance找不到&#xff0c;因为sys.path.append(moduleB)是动态添加的print(fileB)结果 代码正常运行但是vs…

【北京迅为】《STM32MP157开发板嵌入式开发指南》- 第五十四章 Pinctrl 子系统和 GPIO 子系统

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器&#xff0c;既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构&#xff0c;主频650M、1G内存、8G存储&#xff0c;核心板采用工业级板对板连接器&#xff0c;高可靠&#xff0c;牢固耐…

基于百度智能体开发爱情三十六计

基于百度智能体开发爱情三十六计 文章目录 基于百度智能体开发爱情三十六计1. 爱情三十六计智能体2. 三十六计开发创意3. 智能体开发实践3.1 基础配置3.2 进阶配置3.3 调优心得3.4可能会遇到的问题 4. 为什么选择文心智能体平台 1. 爱情三十六计智能体 爱情三十六计 是一款基于…

Kaggle竞赛——森林覆盖类型分类

目录 1. 竞赛简要2. 数据分析2.1 特征类型统计2.2 四个荒野区域数据分析2.3 连续特征分析2.4 离散特征分析2.5 特征相关性热图2.6 特征间的散点关系图 3. 特征工程3.1 特征组合3.2 连续特征标准化 4. 模型搭建4.1 模型定义4.2 绘制混淆矩阵和ROC曲线4.3 模型对比与选择 5. 测试…

从0-1实战演练后台管理系统 (3)还在寻找优秀的后台管理系统?Pure Admin 源码及目录结构带你一探究竟!

一、获取源码: 从-gitee-上拉取从 Gitee 上拉取 1、完整版前端代码 git clone https://gitee.com/yiming_chang/vue-pure-admin.git2、国际化精简版前端代码 git clone -b i18n https://gitee.com/yiming_chang/pure-admin-thin.git3、非国际化精简版前端代码 git clone ht…

【Vue】Vue扫盲(七)如何使用Vue脚手架进行模块化开发及遇到的问题(cmd中无法识别vue命令、vue init webpack 命令执行失败)

上篇文章&#xff1a; Vue】Vue扫盲&#xff08;六&#xff09;关于 Vue 项目运行以及文件关系和关联的详细介绍 文章目录 一、安装 相关工具二、处理相关问题问题一&#xff1a;vue -v 提示 vue不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。问题二&#xf…

wifi、热点密码破解 - python

乐子脚本&#xff0c;有点小慢&#xff0c;试过多线程&#xff0c;系统 wifi 连接太慢了&#xff0c;需要时间确认&#xff0c;多线程的话系统根本反应不过来。 也就可以试试破解别人的热点&#xff0c;一般都是 123456 这样的傻鸟口令 # coding:utf-8 import pywifi from pyw…

el-table修改指定列字体颜色 ,覆盖划过行的高亮显示文字颜色

修改指定列字体颜色 ,覆盖划过行的高亮显示文字颜色 代码如下&#xff1a; <div class"c1"><el-table:data"tableData"striperow-class-name"custom-table-row"style"width:100%"cell-mouse-enter"lightFn"cell-…

Android开发 Camera2(最全代码Camera2开发)

介绍 google已经在Android5.1之后取消了对Camera1的更新,转而提供了功能更加强大的Camera2.虽然新版本依然可以使用Camera1但是,不管是各种机型适配还是拍照参数自定义都是很鸡肋的.跟上最新的技术了解Camera2是必要的.关于Camera2的兼容一般是支持API22之后包括API22的Androi…

Flink时间语义和时间窗口

前言 在实际的流计算业务场景中&#xff0c;我们会发现&#xff0c;数据和数据的计算往往都和时间具有相关性。 举几个例子&#xff1a; 直播间右上角通常会显示观看直播的人数&#xff0c;并且这个数字每隔一段时间就会更新一次&#xff0c;比如10秒。电商平台的商品列表&a…

【大数据技术基础 | 实验一】配置SSH免密登录

文章目录 一、实验目的二、实验要求三、实验原理&#xff08;一&#xff09;大数据实验一体机&#xff08;二&#xff09;SSH免密认证 四、实验环境五、实验内容和步骤&#xff08;一&#xff09;搭建集群服务器&#xff08;二&#xff09;添加域名映射&#xff08;三&#xff…