分类 学习资源 下的文章 - Southerly 个人博客、生活记录!
首页
复制
搜索
前进
后退
重载网页
和我当邻居
给我留言吧
首页
留言
友链
壁纸
归档
关于
相册
推荐
图床
API
站长工具箱
佛曰
联系站长
搜 索
1
每日60秒读懂世界
602 阅读
2
Typecho相册单页模板适用于各个主题
558 阅读
3
一款IP定位插件for Typecho(Joe主题)
529 阅读
4
接入51LA统计——本站(Joe)同款网站浏览量记录
523 阅读
5
中华人民共和国网络安全法
406 阅读
学习资源
python脚本
资源分享
源码
分享
各类教程
安卓逆向
Typecho
日常记录
登录
/
注册
搜 索
标签搜索
分享
教程
typecho
记录
生活
笔记
博客
joe
日常
故事
美化
python
脚本
源码
Southerly
博主
4天前
在线
累计撰写
41
篇文章
累计收到
137
条评论
首页
栏目
学习资源
python脚本
资源分享
源码
分享
各类教程
安卓逆向
Typecho
日常记录
页面
留言
友链
壁纸
归档
关于
相册
推荐
图床
API
站长工具箱
佛曰
联系站长
用户登录
登录
注册
找到
10
篇与
学习资源
相关的结果
2024-07-29
摸鱼日历(每天更新)
专为打工人定制的摸鱼日历
2024年07月29日
39 阅读
2 评论
0 点赞
2024-06-28
typecho博客Joe主题首页文章列表不显示
今天突然发现博客首页文章列表一直显示加载中,加载不出来。具体如图:解决办法查看typecho根目录config.inc.php文件中是否开启了Debug关闭debug后,恢复正常!
2024年06月28日
64 阅读
0 评论
0 点赞
2024-01-26
joe主题美化教程——手机侧边栏
上图看看,给手机侧边栏几个栏目加了图标修改了颜色具体代码及位置如下:在header.php文件中修改<span><font color="#ff8900" style="font-weight:600;"> <i class="fa fa-home"></i> 首页</font></span><span><font color="0909f7b" style="font-weight:600;"> <i class="fa fa-mail-reply-all"></i> 栏目</font></span><span><font color="#f709f7b" style="font-weight:600;"> <i class="fa fa-window-restore"></i> 页面</font></span><span><font color="#66ff00b" style="font-weight:600;"> <i class="fa fa-thumbs-o-up"></i> 推荐</font></span>
2024年01月26日
135 阅读
0 评论
4 点赞
2023-10-18
删除当前目录下内容相同的一个文件--Python脚本
使用说明:1.需要有python环境2.将脚本放在需要处理的文件夹里,双击运行就可以了源码如下:import os # 获取当前目录下所有txt文件 def get_txt_files(): files = [] for file in os.listdir("."): if file.endswith(".txt"): files.append(file) return files # 比较所有txt文件并删除相同的文件 def compare_and_delete(): while True: txt_files = get_txt_files() deleted_files = set() # 存储被删除的文件 for i in range(len(txt_files)): if txt_files[i] in deleted_files: continue for j in range(i + 1, len(txt_files)): if txt_files[j] in deleted_files: continue file1 = txt_files[i] file2 = txt_files[j] with open(file1, "r") as f1, open(file2, "r") as f2: if f1.read() == f2.read(): os.remove(file2) print("删除文件:", file2) print("相同的文件:", file1, file2) deleted_files.add(file2) if not deleted_files: # 如果没有要删除的文件,则跳出循环 break # 执行脚本 compare_and_delete() # 在处理完成后停留在命令窗口 raw_input() # For Python 2 # input() # For Python 3
2023年10月18日
125 阅读
2 评论
2 点赞
2023-08-03
一款经典小游戏,为没有网络的电脑添砖加瓦
由于种种原因电脑不能联网,为使摸鱼更加快乐,闲暇时间写了个小游戏!运行界面如下图:看到界面就知道是什么了吧!没错,是它!是它!就是它————数独游戏!由于是单机电脑,环境比较单一,只有一个python2.7版本(无其它包),仅用自带的包写了一个界面,勉强能玩,大佬勿喷!食用方式1:保存代码为.py或者.pyw即可在有环境的电脑上运行食用方式2:下载我打包好的exe双击运行即可游玩(附文章底部)代码如下,如有bug,请指出# coding:utf-8 import Tkinter as tk import tkMessageBox import random class SudokuGame: def __init__(self, root): self.root = root self.root.title("SuDuKu Game") self.board = [[0 for _ in range(9)] for _ in range(9)] self.generate_board(70) self.labels = [[None for _ in range(9)] for _ in range(9)] self.selected_cell = (0, 0) self.highlighted_number = None # 存储高亮显示的数字 self.draw_board() self.root.bind("<KeyPress>", self.on_key) self.root.bind("<Button-1>", self.on_click) self.root.bind("<ButtonRelease-1>", self.on_double_click) self.root.bind("<Button-3>", self.clear_cell) # 绑定鼠标右键事件 self.create_menu() def create_menu(self): menu_bar = tk.Menu(self.root) # 创建"游戏"菜单 game_menu = tk.Menu(menu_bar, tearoff=0) game_menu.add_command(label="restart", command=lambda: self.restart_game(70)) menu_bar.add_cascade(label="Game", menu=game_menu) # 创建"难度"菜单 difficulty_menu = tk.Menu(menu_bar, tearoff=0) difficulty_menu.add_radiobutton(label="s", command=lambda: self.set_difficulty(60)) difficulty_menu.add_radiobutton(label="ss", command=lambda: self.set_difficulty(50)) difficulty_menu.add_radiobutton(label="sss", command=lambda: self.set_difficulty(40)) menu_bar.add_cascade(label="Difficulty", menu=difficulty_menu) self.root.config(menu=menu_bar) def restart_game(self, difficulty): self.generate_board(difficulty) self.update_board() def set_difficulty(self, difficulty): self.board=[[0 for _ in range(9)] for _ in range(9)] self.fill_board(0, 0) self.remove_numbers(difficulty) self.generate_board(difficulty) # 重新生成数独盘面 self.update_board() # 更新界面 def generate_board(self, difficulty): self.board = [[0 for _ in range(9)] for _ in range(9)] self.fill_board(0, 0) self.remove_numbers(difficulty) def fill_board(self, row, col): if col == 9: row += 1 col = 0 if row == 9: return True numbers = list(range(1, 10)) random.shuffle(numbers) for num in numbers: if self.is_valid_move(row, col, num): self.board[row][col] = num if self.fill_board(row, col + 1): return True self.board[row][col] = 0 return False def is_valid_move(self, row, col, num): # Check row for i in range(9): if self.board[row][i] == num: return False # Check column for i in range(9): if self.board[i][col] == num: return False # Check 3x3 grid start_row = (row // 3) * 3 start_col = (col // 3) * 3 for i in range(start_row, start_row + 3): for j in range(start_col, start_col + 3): if self.board[i][j] == num: return False return True def remove_numbers(self, difficulty): count = 81 - difficulty attempts = 0 while count > 0: row = random.randint(0, 8) col = random.randint(0, 8) if self.board[row][col] != 0: self.board[row][col] = 0 count -= 1 attempts += 1 if attempts >= 100: # 如果尝试次数超过100次,则跳出循环 break if count < 0: tkMessageBox.showinfo("tips", "Setting failed,please try again!!") def draw_board(self): for i in range(9): for j in range(9): number = self.board[i][j] if number == 0: text = '' else: text = str(number) label = tk.Label(self.root, text=text, font=("Arial", 16), width=2, relief=tk.SOLID) label.grid(row=i, column=j) self.labels[i][j] = label # 绑定鼠标双击事件 label.bind("<Double-Button-1>", lambda event, num=number: self.highlight_number(num)) # 判断是否需要高亮显示该数字 if number == self.highlighted_number: label.config(bg='yellow') def update_board(self): for i in range(9): for j in range(9): number = self.board[i][j] label = self.labels[i][j] if number == 0: text = '' else: text = str(number) # 判断是否需要高亮显示该数字 if number == self.highlighted_number: label.config(bg='yellow') else: label.config(bg='white') label.config(text=text) def on_key(self, event): if event.char.isdigit() and 1 <= int(event.char) <= 9: num = int(event.char) row, col = self.selected_cell self.board[row][col] = num self.update_board() self.check_win() def select_cell(self, row, col): self.selected_cell = (row, col) num = self.board[row][col] for i in range(9): for j in range(9): label = self.labels[i][j] if (i, j) == (row, col): label.config(bg='yellow') else: label.config(bg='white') if num == self.highlighted_number: if (i, j) == (row, col): label.config(bg='yellow') else: label.config(bg='white') else: if (i, j) == (row, col): label.config(bg='yellow') elif self.board[i][j] == self.highlighted_number: label.config(bg='yellow') else: label.config(bg='white') def on_click(self, event): x, y = self.root.winfo_pointerxy() widget = self.root.winfo_containing(x, y) for i in range(9): for j in range(9): if widget == self.labels[i][j]: self.select_cell(i, j) def on_double_click(self, event): x, y = self.root.winfo_pointerxy() widget = self.root.winfo_containing(x, y) for i in range(9): for j in range(9): if widget == self.labels[i][j]: self.highlight_number(self.board[i][j]) def clear_cell(self, event): row, col = self.selected_cell self.board[row][col] = 0 self.update_board() self.check_win() def highlight_number(self, num): if self.highlighted_number is None: self.highlighted_number = num else: self.highlighted_number = None self.update_board() def check_win(self): for i in range(9): for j in range(9): if self.board[i][j] == 0: return False tkMessageBox.showinfo("tips", "Win!") if __name__ == "__main__": root = tk.Tk() game = SudokuGame(root) root.mainloop()隐藏内容,请前往内页查看详情
2023年08月03日
251 阅读
2 评论
1 点赞
2023-05-25
文件夹或者文件名称批量修改(python)
当你需要将多个文件名中的某个字符或字符串替换为另一个字符或字符串时,你可以写一个简单的 Python 脚本来实现这个任务。这篇文章将介绍一个使用 os 模块实现的简单文件重命名脚本。第一步:导入 os 模块在 Python 中,os 模块提供了访问文件系统的函数。为了在 Python 脚本中使用 os 模块,我们需要导入该模块:import os第二步:获取当前脚本所在目录在这个脚本中,我们需要获取当前脚本所在目录。Python 提供了 os.path 模块来处理目录和路径。我们可以使用 os.path.abspath(__file__) 函数来获取当前脚本的绝对路径,然后使用 os.path.dirname() 函数获得当前脚本所在的目录路径。这里的代码如下:dirpath = os.path.dirname(os.path.abspath(__file__))其中,__file__ 变量代表当前脚本的文件名(包括路径)。第三步:输入旧字符串和新字符串接下来,我们需要从用户处获取旧字符串和新字符串。我们可以使用 input() 函数来获得用户输入:old_string = input("请输入需要替换的旧字符串:") new_string = input("请输入替换成的新字符串:")这里,input() 函数将提示用户输入旧字符串和新字符串,并将其存储在 old_string 和 new_string 变量中。第四步:重命名文件接下来,我们可以使用 os.listdir() 函数枚举目录中的所有文件和文件夹,并使用 os.rename() 函数将其重命名为新名称。for filename in os.listdir(dirpath): # 构造旧的文件路径以及新的文件路径 old_filepath = os.path.join(dirpath, filename) new_filepath = os.path.join(dirpath, filename.replace(old_string, new_string)) # 如果旧文件路径与新文件路径相同,则跳过 if old_filepath == new_filepath: continue # 判断文件是否为文件夹 if os.path.isdir(old_filepath): # 重命名文件夹 os.rename(old_filepath, new_filepath) else: # 重命名文件 os.rename(old_filepath, new_filepath)这里,os.rename() 函数接受两个参数:旧文件名和新文件名。如果需要重命名文件夹,我们应该先递归地重命名子文件夹和子文件,然后再重命名当前文件夹的名称。第五步:输出完成信息最后,我们可以输出一个完成信息来提示用户脚本已经完成执行。print("完成!")完整代码下面是这个简单的 Python 文件重命名脚本的完整代码:import os # 获取当前脚本所在目录 dirpath = os.path.dirname(os.path.abspath(__file__)) # 获取要替换的旧字符串和替换成的新字符串 old_string = input("请输入需要替换的旧字符串:") new_string = input("请输入替换成的新字符串:") for filename in os.listdir(dirpath): # 构造旧的文件路径以及新的文件路径 old_filepath = os.path.join(dirpath, filename) new_filepath = os.path.join(dirpath, filename.replace(old_string, new_string)) # 如果旧文件路径与新文件路径相同,则跳过 if old_filepath == new_filepath: continue # 判断文件是否为文件夹 if os.path.isdir(old_filepath): # 重命名文件夹 os.rename(old_filepath, new_filepath) else: # 重命名文件 os.rename(old_filepath, new_filepath) print("完成!")效果如图若需要循环替换,在获取脚本所在路径后面加一句while True:
2023年05月25日
131 阅读
0 评论
3 点赞
2023-05-11
手机壁纸第二弹——懂你的壁纸(二)
暂无简介
2023年05月11日
182 阅读
0 评论
2 点赞
2023-04-23
付费测试
11111
2023年04月23日
330 阅读
1 评论
2 点赞
2023-04-08
过年放烟花源码
过年放烟花演示网页中的祝福语可以在源码index.html中247行修改。隐藏内容,请前往内页查看详情
2023年04月08日
192 阅读
0 评论
0 点赞
2023-04-05
蓝空图床搭建
利用宝塔搭建开源版本Lsky Pro图床蓝空图床介绍 蓝空图床是一款免费的在线图片存储工具,可以方便地将图片上传到云端并获取图片链接,让用户可以在博客、论坛、社交媒体等地方使用图片。蓝空图床支持多种图片格式,包括jpg、png、gif等常见格式,同时还支持压缩包上传和批量上传功能,为用户提供了更加便捷的图片管理和使用方式。除此之外,蓝空图床还提供了一些实用的功能,如图片缩放、裁剪、旋转等,让用户可以对图片进行简单的编辑和处理。总的来说,蓝空图床是一款功能齐全、易于使用的在线图片存储工具,适合个人和企业用户使用。搭建教程需要一个服务器、域名、以及Lsky Pro源码从github下载最新版开源版本源码备用,地址如下隐藏内容,请前往内页查看详情说明一下宝塔配置PHP >= 8.0.2BCMath PHP 扩展Ctype PHP 扩展DOM PHP 拓展Fileinfo PHP 扩展JSON PHP 扩展Mbstring PHP 扩展OpenSSL PHP 扩展PDO PHP 扩展Tokenizer PHP 扩展XML PHP 扩展Imagick 拓展exec、shell_exec 函数readlink、symlink 函数putenv、getenv 函数chmod、chown、fileperms 函数 支持本地等多种第三方云储存 AWS S3、阿里云 OSS、腾讯云 COS、七牛云、又拍云、SFTP、FTP、WebDav、Minio 多种数据库驱动支持,MySQL 5.7+、PostgreSQL 9.6+、SQLite 3.8.8+、SQL Server 2017+ 支持配置使用多种缓存驱动,Memcached、Redis、DynamoDB、等其他关系型数据库,默认以文件的方式缓存 多图上传、拖拽上传、粘贴上传、动态设置策略上传、复制、一键复制链接 强大的图片管理功能,瀑布流展示,支持鼠标右键、单选多选、重命名等操作 自由度极高的角色组配置,可以为每个组配置多个储存策略,同时储存策略可以配置多个角色组 可针对角色组设置上传文件、文件夹路径命名规则、上传频率限制、图片审核等功能 支持图片水印、文字水印、水印平铺、设置水印位置、X/y 轴偏移量设置、旋转角度等 支持通过接口上传、管理图片、管理相册 支持在线增量更新、跨版本更新 图片广场1、开始搭建,打开宝塔,如图新建站点2、按照前面的要求添加扩展这里已经添加好3、将源码上传到网站根目录下并解压4、网站设置location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; break; } }5、对了别忘了建立数据库,记下用户名、数据库名、以及密码接下来就可以访问域名安装Lsky pro图床了,根据提示填写信息完成就搭建好了蓝空图床。有时间在补充Typecho对接蓝空图床,待续,,,,,,
2023年04月05日
225 阅读
2 评论
2 点赞