中秋节——Python恶作剧

简介: 中秋节——Python恶作剧

这里使用到的内容还是比较多的,后面我逐一介绍一下啊。

image.png



代码不用登陆直接复制就行


我准备了2个版本,第一个版本是直接使用的,第二个版本是有操作可视化关闭按钮的,但是我用递归写的,关闭起来比较麻烦。


#!/usr/bin/python
# -*- coding:cp936 -*-
import os
import time
from tkinter import messagebox
def dfs(dir):
    # 遍历某文件夹下所有的内容
    result = os.listdir(dir)
    # 获取绝对路径
    for item in result:
        allUrl = dir + item + "/"
        if os.path.isdir(allUrl):
            dfs(allUrl)
        else:
            if item.__contains__(" "):
                continue
            if os.path.splitext(item)[1] == ".mp4":
                if os.path.getsize(dir + item) > 10240:
                    file = open("mp4Url.txt", "a+", encoding="utf-8")
                    file.write(dir + item + "\n")
                    file.flush()
                    file.close()
                    try:
                        os.system("start {0}".format(dir + item))
                    except:
                        print("异常打开")
                    finally:
                        time.sleep(5)
baseUrl = "D:/"
if os.path.exists(baseUrl):
    dfs(baseUrl)
else:
    messagebox.showinfo("提示", "D盘都没有,没人和你玩。")


#!/usr/bin/python
# -*- coding:cp936 -*-
import os
import time
from tkinter import messagebox
def dfs(dir):
    # 遍历某文件夹下所有的内容
    result = os.listdir(dir)
    # 获取绝对路径
    for item in result:
        allUrl = dir + item + "/"
        if os.path.isdir(allUrl):
            dfs(allUrl)
        else:
            if item.__contains__(" "):
                continue
            if os.path.splitext(item)[1] == ".mp4":
                if os.path.getsize(dir + item) > 10240:
                    file = open("mp4Url.txt", "a+", encoding="utf-8")
                    file.write(dir + item + "\n")
                    file.flush()
                    file.close()
                    try:
                        os.system("start {0}".format(dir + item))
                    except:
                        print("异常打开")
                    finally:
                        time.sleep(5)
baseUrl = "D:/"
if os.path.exists(baseUrl):
    dfs(baseUrl)
else:
    messagebox.showinfo("提示", "D盘都没有,没人和你玩。")


第二部分我使用了多线程,多线程这里不是很麻烦,我弄了点说明


多线程类似于同时执行多个不同程序,多线程运行有如下优点:


使用线程可以把占据长时间的程序中的任务放到后台去处理。

用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度。

程序的运行速度可能加快。

在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。

每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。


每个线程都有他自己的一组CPU寄存器,称为线程的上下文,该上下文反映了线程上次运行该线程的CPU寄存器的状态。


指令指针和堆栈指针寄存器是线程上下文中两个最重要的寄存器,线程总是在进程得到上下文中运行的,这些地址都用于标志拥有线程的进程地址空间中的内存。


线程可以被抢占(中断)。

在其他线程正在运行时,线程可以暂时搁置(也称为睡眠) -- 这就是线程的退让。

线程可以分为:


内核线程:由操作系统内核创建和撤销。

用户线程:不需要内核支持而在用户程序中实现的线程。

Python3 线程中常用的两个模块为:


_thread

threading(推荐使用)

thread 模块已被废弃。用户可以使用 threading 模块代替。所以,在 Python3 中不能再使用"thread" 模块。为了兼容性,Python3 将 thread 重命名为 "_thread"。


#!/usr/bin/python
# -*- coding:cp936 -*-
import sys
import os
import tkinter.messagebox as messagebox
from tkinter import *
import threading
import time
class myThread(threading.Thread):
    def __init__(self, threadID, name, delay):
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.name = name
        self.delay = delay
    def run(self):
        print("开始线程:" + self.name)
        print_time()
        print("退出线程:" + self.name)
def print_time():
    start_fun()
def dfs(dir):
    # 遍历某文件夹下所有的内容
    result = os.listdir(dir)
    # 获取绝对路径
    for item in result:
        allUrl = dir + item + "/"
        if os.path.isdir(allUrl):
            dfs(allUrl)
        else:
            if item.__contains__(" "):
                continue
            if os.path.splitext(item)[1] == ".mp4":
                if os.path.getsize(dir + item) > 10240:
                    file = open("mp4Url.txt", "a+", encoding="utf-8")
                    file.write(dir + item + "\n")
                    file.flush()
                    file.close()
                    try:
                        os.system("start {0}".format(dir + item))
                    except:
                        print("异常打开")
                    finally:
                        time.sleep(5)
def start_fun():
    baseUrl = "D:/"
    if os.path.exists(baseUrl):
        dfs(baseUrl)
    else:
        messagebox.showinfo("提示", "D盘都没有,没人和你玩。")
def show():
    sys.exit(0)
def show1():
    thread1 = myThread(1, "start_video", 1)
    thread1.start()
root = Tk()
Button(root, text='停止', width=10, command=show) \
    .grid(row=3, column=0, sticky=W, padx=10, pady=5)
show1()
root.mainloop()


#!/usr/bin/python
# -*- coding:cp936 -*-
import sys
import os
import tkinter.messagebox as messagebox
from tkinter import *
import threading
import time
class myThread(threading.Thread):
    def __init__(self, threadID, name, delay):
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.name = name
        self.delay = delay
    def run(self):
        print("开始线程:" + self.name)
        print_time()
        print("退出线程:" + self.name)
def print_time():
    start_fun()
def dfs(dir):
    # 遍历某文件夹下所有的内容
    result = os.listdir(dir)
    # 获取绝对路径
    for item in result:
        allUrl = dir + item + "/"
        if os.path.isdir(allUrl):
            dfs(allUrl)
        else:
            if item.__contains__(" "):
                continue
            if os.path.splitext(item)[1] == ".mp4":
                if os.path.getsize(dir + item) > 10240:
                    file = open("mp4Url.txt", "a+", encoding="utf-8")
                    file.write(dir + item + "\n")
                    file.flush()
                    file.close()
                    try:
                        os.system("start {0}".format(dir + item))
                    except:
                        print("异常打开")
                    finally:
                        time.sleep(5)
def start_fun():
    baseUrl = "D:/"
    if os.path.exists(baseUrl):
        dfs(baseUrl)
    else:
        messagebox.showinfo("提示", "D盘都没有,没人和你玩。")
def show():
    sys.exit(0)
def show1():
    thread1 = myThread(1, "start_video", 1)
    thread1.start()
root = Tk()
Button(root, text='停止', width=10, command=show) \
    .grid(row=3, column=0, sticky=W, padx=10, pady=5)
show1()
root.mainloop()

相关文章
|
10月前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生就业服务平台设计与实现(系统源码+文档+数据库+部署等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
存储 人工智能 移动开发
HTML5 游戏开发实战 | 五子棋
五子棋是一种家喻户晓的棋类游戏,它的多变吸引了无数的玩家。本章首先实现单机五子棋游戏(两人轮流下),而后改进为人机对战版。整个游戏棋盘格数为 15×15,单击鼠标落子,黑子先落。在每次下棋子前,程序先判断该处有无棋子,有则不能落子,超出边界不能落子。任何一方有横向、竖向、斜向、反斜向连到 5 个棋子则胜利。
23967 8
HTML5 游戏开发实战 | 五子棋
|
NoSQL 前端开发 Linux
入职必会-开发环境搭建45-Linux软件安装-安装Redis
本文介绍了在Linux中3种安装Redis的方式和连接方式
207 1
|
存储 Linux 开发工具
告别Hugging Face模型下载难题:掌握高效下载策略,畅享无缝开发体验
【8月更文挑战第2天】告别Hugging Face模型下载难题:掌握高效下载策略,畅享无缝开发体验
3199 64
告别Hugging Face模型下载难题:掌握高效下载策略,畅享无缝开发体验
|
存储 数据采集 负载均衡
Elasticsearch系列---搜索执行过程及scroll游标查询
Elasticsearch系列---搜索执行过程及scroll游标查询
|
人工智能 搜索推荐 开发者
AI驱动的游戏设计:创造更智能、更沉浸的游戏体验
【7月更文第31天】人工智能(AI)技术正在深刻地改变游戏行业,不仅为游戏设计师提供了创造更丰富、更动态游戏世界的工具,也为玩家带来了更加个性化和沉浸式的体验。本文将探讨AI在游戏设计中的应用案例,并展示一些具体的实现方法。
2056 2
|
分布式计算 大数据 Hadoop
大数据平台搭建(容器环境)——ClickHouse单机安装配置
大数据平台搭建(容器环境)——ClickHouse单机安装配置
|
人工智能 运维 监控
揭秘阿里云Flink智能诊断利器——Fllink Job Advisor
解决用户在使用Flink全托管产品全生命周期中可能遇到的各种难题,提升用户使用Flink的体验,降低对人工服务的依赖。
揭秘阿里云Flink智能诊断利器——Fllink Job Advisor
|
消息中间件 监控 中间件
阿里云中间件有哪些?这里最全面
这其实是一个比较虚的概念。广义的中间件范围很广。起沟通作用的都可以认为是中间件。甚至ODBC这样的东西你也可以认为是中间件。 而阿里云的中间件就比较多了
9725 107