20+个很棒的python脚本的集合(迷你项目)(代码片段)

海拥✘ 海拥✘     2023-03-24     711

关键词:

1.将 JSON 转换为 CSV

import json
if __name__ == '__main__':
    try:
        with open('input.json', 'r') as f:
            data = json.loads(f.read())

        output = ','.join([*data[0]])
        for obj in data:
            output += f'\\nobj["Name"],obj["age"],obj["birthyear"]'

        with open('output.csv', 'w') as f:
            f.write(output)
    except Exception as ex:
        print(f'Error: str(ex)')

2.密码生成器

import random
import string
total = string.ascii_letters + string.digits + string.punctuation
length = 16
password = "".join(random.sample(total, length))
print(password)

3.从多个文件中搜索字符串

import os
text = input("input text : ")
path = input("path : ")
# os.chdir(path)
def getfiles(path):
    f = 0
    os.chdir(path)
    files = os.listdir()
    # print(files)
    for file_name in files:
        abs_path = os.path.abspath(file_name)
        if os.path.isdir(abs_path):
            getfiles(abs_path)
        if os.path.isfile(abs_path):
            f = open(file_name, "r")
            if text in f.read():
                f = 1
                print(text + " found in ")
                final_path = os.path.abspath(file_name)
                print(final_path)
                return True
    if f == 1:
        print(text + " not found! ")
        return False

getfiles(path)

4.从给定网页获取所有链接

import requests as rq
from bs4 import BeautifulSoup

url = input("Enter Link: ")
if ("https" or "http") in url:
    data = rq.get(url)
else:
    data = rq.get("https://" + url)
soup = BeautifulSoup(data.text, "html.parser")
links = []
for link in soup.find_all("a"):
    links.append(link.get("href"))

# 将输出写入文件(myLinks.txt)而不是stdout
# 每次都可以将“a”更改为“w”以覆盖文件
with open("myLinks.txt", 'a') as saved:
    print(links[:10], file=saved)

5.图像水印

import os
from PIL import Image

def watermark_photo(input_image_path,watermark_image_path,output_image_path):
    base_image = Image.open(input_image_path)
    watermark = Image.open(watermark_image_path).convert("RGBA")
    # 为图像添加水印
    position = base_image.size
    newsize = (int(position[0]*8/100),int(position[0]*8/100))
    # print(position)
    watermark = watermark.resize(newsize)
    # print(newsize)
    # return watermark

    new_position = position[0]-newsize[0]-20,position[1]-newsize[1]-20
    # 创建新的透明图像
    transparent = Image.new(mode='RGBA',size=position,color=(0,0,0,0))
    # 粘贴原始图像
    transparent.paste(base_image,(0,0))
    # 粘贴水印图像
    transparent.paste(watermark,new_position,watermark)
    image_mode = base_image.mode
    print(image_mode)
    if image_mode == 'RGB':
        transparent = transparent.convert(image_mode)
    else:
        transparent = transparent.convert('P')
    transparent.save(output_image_path,optimize=True,quality=100)
    print("Saving"+output_image_path+"...")

folder = input("Enter Folder Path:")
watermark = input("Enter Watermark Path:")
os.chdir(folder)
files = os.listdir(os.getcwd())
print(files)

if not os.path.isdir("output"):
    os.mkdir("output")

c = 1
for f in files:
    if os.path.isfile(os.path.abspath(f)):
        if f.endswith(".png") or f.endswith(".jpg"):
            watermark_photo(f,watermark,"output/"+f)

6.从网页抓取并下载所有图片

from selenium import webdriver
import requests as rq
import os
from bs4 import BeautifulSoup
import time

# path= E:\\web scraping\\chromedriver_win32\\chromedriver.exe
path = input("Enter Path : ")

url = input("Enter URL : ")

output = "output"


def get_url(path, url):
    driver = webdriver.Chrome(executable_path=r"".format(path))
    driver.get(url)
    print("loading.....")
    res = driver.execute_script("return document.documentElement.outerHTML")

    return res


def get_img_links(res):
    soup = BeautifulSoup(res, "lxml")
    imglinks = soup.find_all("img", src=True)
    return imglinks


def download_img(img_link, index):
    try:
        extensions = [".jpeg", ".jpg", ".png", ".gif"]
        extension = ".jpg"
        for exe in extensions:
            if img_link.find(exe) > 0:
                extension = exe
                break

        img_data = rq.get(img_link).content
        with open(output + "\\\\" + str(index + 1) + extension, "wb+") as f:
            f.write(img_data)

        f.close()
    except Exception:
        pass


result = get_url(path, url)
time.sleep(60)
img_links = get_img_links(result)
if not os.path.isdir(output):
    os.mkdir(output)

for index, img_link in enumerate(img_links):
    img_link = img_link["src"]
    print("Downloading...")
    if img_link:
        download_img(img_link, index)
print("Download Complete!!")

7.低电量通知

# pip install psutil
import psutil

battery = psutil.sensors_battery()
plugged = battery.power_plugged
percent = battery.percent

if percent <= 30 and plugged!=True:

    # pip install py-notifier
    # pip install win10toast
    from pynotifier import Notification

    Notification(
        title="Battery Low",
        description=str(percent) + "% Battery remain!!",
        duration=5,  # 持续时间(秒)

    ).send()

8.计算您的年龄

import time
from calendar import isleap

# 判断闰年
def judge_leap_year(year):
    if isleap(year):
        return True
    else:
        return False


# 返回每个月的天数
def month_days(month, leap_year):
    if month in [1, 3, 5, 7, 8, 10, 12]:
        return 31
    elif month in [4, 6, 9, 11]:
        return 30
    elif month == 2 and leap_year:
        return 29
    elif month == 2 and (not leap_year):
        return 28


name = input("input your name: ")
age = input("input your age: ")
localtime = time.localtime(time.time())

year = int(age)
month = year * 12 + localtime.tm_mon
day = 0

begin_year = int(localtime.tm_year) - year
end_year = begin_year + year

# 计算天数
for y in range(begin_year, end_year):
    if (judge_leap_year(y)):
        day = day + 366
    else:
        day = day + 365

leap_year = judge_leap_year(localtime.tm_year)
for m in range(1, localtime.tm_mon):
    day = day + month_days(m, leap_year)

day = day + localtime.tm_mday
print("%s's age is %d years or " % (name, year), end="")
print("%d months or %d days" % (month, day))

9.组织不同类别的下载文件夹

import os
import shutil
os.chdir("E:\\downloads")
#print(os.getcwd())

#检查目录中的文件数
files = os.listdir()

#扩展名列表(如果需要,可以添加更多)
extentions = 
    "images": [".jpg", ".png", ".jpeg", ".gif"],
    "videos": [".mp4", ".mkv"],
    "musics": [".mp3", ".wav"],
    "zip": [".zip", ".tgz", ".rar", ".tar"],
    "documents": [".pdf", ".docx", ".csv", ".xlsx", ".pptx", ".doc", ".ppt", ".xls"],
    "setup": [".msi", ".exe"],
    "programs": [".py", ".c", ".cpp", ".php", ".C", ".CPP"],
    "design": [".xd", ".psd"]





#根据扩展名排序到特定文件夹
def sorting(file):
    keys = list(extentions.keys())
    for key in keys:
        for ext in extentions[key]:
            # print(ext)
            if file.endswith(ext):
                return key


#遍历每个文件
for file in files:
    dist = sorting(file)
    if dist:
        try:
            shutil.move(file, "../download-sorting/" + dist)
        except:
            print(file + " is already exist")
    else:
        try:
            shutil.move(file, "../download-sorting/others")
        except:
            print(file + " is already exist")

10.从CSV文件批量发送电子邮件

import csv
from email.message import EmailMessage
import smtplib


def get_credentials(filepath):
    with open("credentials.txt", "r") as f:
        email_address = f.readline()
        email_pass = f.readline()
    return (email_address, email_pass)


def login(email_address, email_pass, s):
    s.ehlo()
    # 启动TLS以实现安全
    s.starttls()
    s.ehlo()
    # Authentication
    s.login(email_address, email_pass)
    print("login")


def send_mail():
    s = smtplib.SMTP("smtp.gmail.com", 587)
    email_address, email_pass = get_credentials("./credentials.txt")
    login(email_address, email_pass, s)

    # 要发送的消息
    subject = "Welcome to Python"
    body = """Python is an interpreted, high-level,
    general-purpose programming language.\\n
    Created by Guido van Rossum and first released in 1991,
    Python's design philosophy emphasizes code readability\\n
    with its notable use of significant whitespace"""

    message = EmailMessage()
    message.set_content(body)
    message['Subject'] = subject

    with open("emails.csv", newline="") as csvfile:
        spamreader = csv.reader(csvfile, delimiter=" ", quotechar="|")
        for email in spamreader:
            s.send_message(email_address, email[0], message)
            print("Send To " + email[0])

    # 终止会话
    s.quit()
    print("sent")


if __name__ == "__main__":
    send_mail()

11.获取网站的IP地址和主机名

# 获取网站的IP地址和主机名
# importing socket library
import socket

def get_hostname_IP():
    hostname = input("Please enter website address(URL):")
    try:
        print (f'Hostname: hostname')
        print (f'IP: socket.gethostbyname(hostname)')
    except socket.gaierror as error:
        print (f'Invalid Hostname, error raised is error')

get_hostname_IP()

12.终端进度条

from tqdm import tqdm
from PIL import Image
import os
from time import sleep


def Resize_image(size, image):
    if os.path.isfile(image):
        try:
            im = Image.open(image)
            im.thumbnail(size, Image.ANTIALIAS)
            im.save("resize/" + str(image) + ".jpg")
        except Exception as ex:
            print(f"Error: str(ex) to image")


path = input("Enter Path to images : ")
size = input("Size Height , Width : ")
size = tuple(map(int, size.split(",")))

os.chdir(path)

list_images = os.listdir(path)
if "resize" not in list_images:
    os.mkdir("resize")

for image in tqdm(list_images, desc="Resizing Images"):
    Resize_image(size, image)
    sleep(0.1)
print("Resizing Completed!")

13.无线密码弹出器

import subprocess

data = (
    subprocess.check_output(["net

20个很棒的android开源项目帮助你提升开发技能

版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]转载请注明出处:http://blog.csdn.net/crazy1235/article/details/56087721对程序员来说,最好的学习也是阅读,多看别人优秀的代码,加以总结学... 查看详情

20个很棒的android开源项目帮助你提升开发技能

版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]转载请注明出处:http://blog.csdn.net/crazy1235/article/details/56087721对程序员来说,最好的学习也是阅读,多看别人优秀的代码,加以总结学... 查看详情

10个很棒的javascript库,提升web开发效率

JavaScript是最流行的编程语言之一。过去的20年中程序员们见证了它的爆发式增长。现在,JavaScript几乎可以执行任何操作,并且可以在包括物联网在内的多个平台和设备上运行。其流行的原因之一是大量框架和库的可用性。作为... 查看详情

你需要知道的15个很棒的css动画库

从一种CSS样式配置到另一种的过渡可以使用CSS动画进行动画处理。描述CSS动画的样式和指示动画样式的开始和结束状态的一组关键帧,以及可能的中间路点,构成了动画。与传统的脚本驱动动画技术相比,CSS动画提供... 查看详情

你需要知道的15个很棒的css动画库

从一种CSS样式配置到另一种的过渡可以使用CSS动画进行动画处理。描述CSS动画的样式和指示动画样式的开始和结束状态的一组关键帧,以及可能的中间路点,构成了动画。与传统的脚本驱动动画技术相比,CSS动画提供... 查看详情

8个很棒的vue开发技巧

1.路由参数解耦通常在组件中使用路由参数,大多数人会做以下事情。exportdefaultmethods:getParamsId()returnthis.$route.params.id在组件中使用$route会导致与其相应路由的高度耦合,通过将其限制为某些URL来限制组件的灵活性。正确... 查看详情

python很棒的python代码(代码片段)

查看详情

一些很棒的js代码(持续跟新)

1.jQuery初始化代码段  技术亮点:jQuery无new化构建、每次jQuery构建的作用域隔离、jQuery拓展插件。  实现源码:varjQuery=function(args){returnnewjQuery.fn.init(args);}jQuery.fn=jQuery.prototype={init:function(args){returnthis;},otherFn:funct 查看详情

csharp很棒的代码(代码片段)

查看详情

国外大神制作的一个很棒的matplotlib可视化教程(代码片段)

 国外大神制作的一个很棒的matplotlib可视化教程 参考:https://www.machinelearningplus.com/plots/top-50-matplotlib-visualizations-the-master-plots-python/ ?一:关联散点图带边界的气泡图散点图与最佳拟合线与stripplot抖动计数图边缘直方图... 查看详情

很棒的接口实例,可以练习接口

https://www.sojson.com/api/semantic.html 查看详情

csszurb.com很棒的按钮(代码片段)

查看详情

没有找到很棒的字体

】没有找到很棒的字体【英文标题】:fontawesomenotfound【发布时间】:2020-08-0202:43:38【问题描述】:我希望有人可以帮助我解决这个问题。我为fontawesome添加了颤振依赖项,但是当我尝试导入包时,我收到以下错误。dependencies:flutt... 查看详情

很棒的 CSS 效果

】很棒的CSS效果【英文标题】:AwesomeCSSEffect【发布时间】:2011-06-1810:14:14【问题描述】:404Page或500Page有人知道如何做这种事情吗?用鼠标移动的动画?感谢您的更正,@Alin。只是一个教程的链接会很好。编辑:刚刚还了解到它... 查看详情

#导入md文档图片#使用htmlcssjs和api制作一个很棒的天气web应用程序

@TOC很高兴又见面了!今天我将制作一个很棒的天气应用程序,我们可以在其中搜索任何城市、地区或国家/地区,并使用WeatherAPI获取其当前天气。此外,为了给它添加一些修饰,我还使用了UnsplashAPI作为网站的背景图片,这将基... 查看详情

text很棒的博客由其他人发布(代码片段)

查看详情

很棒的 wm taglist 大小

】很棒的wmtaglist大小【英文标题】:awesomewmtaglistsize【发布时间】:2014-02-1612:06:43【问题描述】:找不到任何关于更改taglist元素大小宽度的手册。Taglist元素比我设置的图标更宽。看起来真的很糟糕=(截图:http://s12.postimg.org/fkva7xy... 查看详情

“Google 按图片搜索”的 Python 脚本

...【问题讨论】:我猜谷歌担心会产生的资源。这将是一件很棒的 查看详情