中秋节——Python恶作剧

举报
红目香薰 发表于 2022/08/31 19:48:34 2022/08/31
【摘要】 ​ ​编辑程序员过中秋的一百种方式之——Python恶作剧中秋了,总要有点视频看,可以看看自己的回忆,也可以搜罗一下自己当年存储的视频。本示例执行后会自动打开D盘的所有视频。这里使用到的内容还是比较多的,后面我逐一介绍一下啊。​编辑代码不用登陆直接复制就行我准备了2个版本,第一个版本是直接使用的,第二个版本是有操作可视化关闭按钮的,但是我用递归写的,关闭起来比较麻烦。#!/usr/bin/p...

 编辑

程序员过中秋的一百种方式之——Python恶作剧

中秋了,总要有点视频看,可以看看自己的回忆,也可以搜罗一下自己当年存储的视频。

本示例执行后会自动打开D盘的所有视频。

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

编辑

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

我准备了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()


【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。