使用Python恢复Windows、Linux、MacOS回收站中的文件和目录

一、使用Python恢复Windows回收站中的文件和目录

import os
import platformdef put_back_trash():# 获取操作系统类型os_type = platform.system()if os_type == "Windows":  # Windowsfrom winshell import recycle_binfor item in recycle_bin():winshell.undelete(item.original_filename())else:print("Unsupported operating system.")put_back_trash()

二、使用Python恢复Linux回收站中的文件和目录

import os
import platform
import shutil
import urllib.parsedef get_linux_original_path(filename):"""获取回收站中文件的原始路径"""trash_info_file = filename + '.trashinfo'trash_info_path = os.path.join(os.path.expanduser('~'), '.local/share/Trash/info', trash_info_file)with open(trash_info_path) as f:for line in f:if line.startswith('Path='):return urllib.parse.unquote(line[5:].strip())return Nonedef restore_linux_file(filename):"""将文件从回收站移动到原始位置"""original_path = get_linux_original_path(filename)if original_path is None:print(f'Error: Could not find original path for {filename}')returnif os.path.exists(original_path):print(f'Error: File {original_path} already exists')returntrash_file_path = os.path.join(os.path.expanduser('~'), '.local/share/Trash/files', filename)shutil.move(trash_file_path, original_path)print(f'Successfully restored {filename} to {original_path}')def restore_linux_all_files():recycle_bin_path = os.path.expanduser("~/.local/share/Trash/files")for filename in os.listdir(recycle_bin_path):restore_linux_file(filename)def put_back_trash():# 获取操作系统类型os_type = platform.system()if os_type == "Linux":  # Linuxrestore_linux_all_files()else:print("Unsupported operating system.")put_back_trash()

三、使用Python恢复MacOS回收站中的文件和目录

import os
import platform
import shutil
import urllib.parsedef put_back_trash():# 获取操作系统类型os_type = platform.system()if os_type == "Darwin":  # macOSdef generate_applescript():script = '''tell application "Finder"activateset file_count to count of (trash's items)-- log file_countrepeat file_count timesrecoverMyFile() of meend repeatend tellon recoverMyFile()tell application "System Events"set frontmost of process "Finder" to truetell application "Finder"open trashselect the first item of front windowend telltell process "Finder"key code 51 using command downdelay 2 -- Yes, it's stupid, but necessary :(end tellend tellend recoverMyFile'''with open('apple.script', 'w') as f:f.write(script)def recover_macOS_all_files():generate_applescript()os.system("osascript apple.script")recover_macOS_all_files()else:print("Unsupported operating system.")put_back_trash()

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

针对防火墙IPSec业务不通或业务丢包问题,防火墙如何做流量统计、远程抓包、报文示踪

问题描述 针对防火墙IPSec业务不通或业务丢包问题,防火墙如何做流量统计、远程抓包、报文示踪 解决方案 1)配置流统和远程抓包用的ACL; system [sysname] acl 3555 [sysname-acl-adv-3555] rule permit icmp source 10.82.100.215 0 destin…

结构型模式之代理模式

一、概述 1、代理模式:给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问。 2、代理对象在客户端和目标对象之间起到中介作用 3、引入一个新的代理对象,代理模式的主要目的是在不改变原始对象接口的前提下,增…

DORIS学习网址

DORIS学习网址 序号学习网址备注1ApacheDoris系列|Bucket(分桶)数量设置和自动分桶-CSDN博客自动分桶2Apache Doris 入门教程23:自动分桶和Broker概念介绍_doris broker-CSDN博客新版自动分桶说明3一文教你玩转 Apache Doris 分区分桶新功能|…

Spring 中AbstractRefreshableWebApplicationContext

AbstractRefreshableWebApplicationContext 是 Spring Framework 中用于 Web 应用程序的一个抽象类,位于 org.springframework.web.context.support 包中。它继承自 AbstractRefreshableApplicationContext,主要用于支持 Web 应用程序的上下文管理。 主…

[C语言]一、C语言基础(函数)

G:\Cpp\C语言精讲 6. 函数 6.1函数的基本使用 6.1.1 为什么需要函数 《街霸》游戏中,每次人物出拳、出脚或跳跃等动作都需要编写50-80行的代码,在每次出拳、出脚或跳跃的地方都需要重复地编写这50-80行代码,这样程序会变得很臃肿&#xff…

C++基础面试题 | C和C++的区别?

人生如逆旅,我亦是行人。 - 《临江仙送钱穆父》(苏轼) 2024.8.23 回答重点:C可以认为是C语言的超集,绝大部分C语言代码可以使用C运行 在设计思想上:面向过程 vs 面向对象 C是一种面向过程的编程语言,它侧重于函数和过程…

python学习8-数据获取与整理4

pandas迭代 在 Pandas 中,通常情况下你不需要迭代(遍历)DataFrame 或 Series,因为很多操作都是矢量化的,可以直接应用于整个数据集。然而,有时候你可能需要遍历数据帧(DataFrame)或…

通过Python绘制不同数据类型适合的可视化图表

在数据可视化中,对于描述数值变量与数值变量之间的关系常见的有散点图和热力图,以及描述数值变量与分类变量之间的关系常见的有条形图,饼图和折线图,可以通过使用Python的matplotlib和seaborn库来绘制图表进行可视化表达&#xff…

如何使用ssm实现ssm框架的购物网站+vue

TOC ssm113ssm框架的购物网站vue 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化,规范化管理。…

如何评估Redis的性能

如果系统中出现了大 key、热 key 等,往往会导致 Redis 变慢,但是这个慢该如何界定?多久算慢?1秒还是3秒? 这个肯定是没有标准答案,因为这个和你的硬件设备有关。 硬件差一些,平时响应时间都是…

[C++] 初识 智能指针

标题:[C] 初识 智能指针 水墨不写bug 目录 一、前言 二、智能指针 1. 什么是RAII? 2.智能指针分类 三、智能指针简介 1.std::auto_ptr 2.std::unique_ptr 3.std::shared_ptr 正文开始: 一、前言 C智能指针的出现是有一定的背景的&am…

今天你City了吗?维乐Angel Revo带你穿梭都市自由随风~

当7月的热浪在都市中翻滚,你是否渴望逃离钢筋水泥的束缚,寻找一片属于自己的绿意盎然?今天你City了吗?快带上VELO Angel Revo一起抓住夏日的尾巴,用一场骑行与这座城市的风景共舞!      轻巧出行&#…

Centos安装Jenkins教程详解版(JDK8+Jenkins2.346.1)

本教程基于 JDK8 和 Jenkins2.346.1 JDK安装 下载OpenJDK8文件 wget https://mirrors.tuna.tsinghua.edu.cn/Adoptium/8/jdk/x64/linux/OpenJDK8U-jdk_x64_linux_hotspot_8u422b05.tar.gz解压到指定目录 # 创建目录 mkdir -p /usr/local/software# 解压文件到指定目录&#…

linux-基础知识1

简单命令 init 0 关机 int 6 重启 pwd 查看当前所在目录, cd切换目录 ls 列出目录下的内容 clear 清屏 date 查看时间 路径 linux表示硬件设备的文件在dev目录 /tmp是临时目录,可以创建目录和文件,但不能保证安全 df查看文件系统…

oracle共享池(shared pool):一、工作原理、组成部分 二、软硬解析过程

文章目录 oracle整体结构图共享池(shared pool)shared pool的作用shared pool的组成查询 shared pool 各组成部分大小硬解析和软解析 oracle整体结构图 共享池(shared pool) shared pool的作用 1、 将 sql 语句解析成执行计划 …

【Node】【2】创建node应用

创建node应用 node应用,不仅可以实现web应用,也能实现http服务器。 如果是php写后端,还需要有http服务器,比如apache 或者 nginx。 但是现在主流都是java写后端,也可以像 Node.js 一样用于实现 Web 应用和 HTTP 服务…

easypoi模板导出word多页导出加强版

说明 上一篇文章提到多页导出,但是后边发现一个问题,如果用同一个模板导出多页内容,我们去获取多页内容的时候,会发现全部都一样,举个例子: XWPFDocument document WordExportUtil.exportWord07(outputU…

有限差分学习笔记

有限差分介绍 ​ 在数学中,有限差分法(finite-difference methods,简称FDM),是一种微分方程数值方法,是通过有限差分来近似导数,从而寻求微分方程的近似解。 由泰勒展开式的推导 显式方…

C# 项目管理CLI常用命令

Command Line Interface (CLI) .NET Command Line Interface (CLI) 是一个跨平台的工具链&#xff0c;用于开发、构建、运行和发布基于 .NET Core 和 .NET 5 应用程序。以下是一些常用的 .NET CLI 命令及其简要说明&#xff1a; 创建新项目 dotnet new <template> [-n|…

选择搜索引擎进行搜索

<!DOCTYPE html> <html> <head><meta charset"utf-8"><title>选择搜索引擎进行搜索</title><script>function searchSelectedEngine() {var keyword document.getElementById(keyword).value;var engine document.getEl…