ChatGPT生成的一些有趣的文件管理用python小程序

1. 在前位置中的所有文件夹内增加一个名为 abc 的新文件夹

import osdef create_abc_directories(root_dir='.'):# 获取当前目录下的所有目录subdirectories = [d for d in os.listdir(root_dir) if os.path.isdir(os.path.join(root_dir, d))]# 在每个目录中创建名为abc的子目录for directory in subdirectories:abc_dir = os.path.join(root_dir, directory, 'abc')os.makedirs(abc_dir, exist_ok=True)print(f"在 {directory} 目录中创建了 {abc_dir} 目录")if __name__ == "__main__":create_abc_directories()

用法:保存为 *.py文件,增加x权限,执行命令:  python *.py

2. 批量新建以文件 a.txt 内的名称命名的文件夹

import osdef create_folders_from_file(file_path='a.txt'):# 检查文件是否存在if not os.path.exists(file_path):print(f"错误: 文件 '{file_path}' 不存在。")return# 打开文件并逐行读取文件名with open(file_path, 'r') as file:folder_names = [line.strip() for line in file.readlines()]# 在当前位置创建文件夹,如果同名文件夹已存在则跳过for folder_name in folder_names:folder_path = os.path.join(os.getcwd(), folder_name)if os.path.exists(folder_path) and os.path.isdir(folder_path):print(f"文件夹 '{folder_name}' 已存在,跳过创建。")else:os.makedirs(folder_path, exist_ok=True)print(f"已创建文件夹: {folder_path}")if __name__ == "__main__":create_folders_from_file()

运行命令:  python *.py ./a.txt 

这个脚本首先检查文件a.txt是否存在,然后逐行读取该文件中的名称。对于每个名称,它构建文件夹路径并检查是否已经存在。如果存在,则输出提示信息并跳过创建;否则,它将创建新的文件夹。


 

3.检查当前位置中的所有空文件夹并将其删除,递归执行

import osdef remove_empty_directories(root_dir='.'):# 获取当前目录下的所有子目录和文件for root, dirs, files in os.walk(root_dir, topdown=False):for directory in dirs:folder_path = os.path.join(root, directory)# 检查目录是否为空if not os.listdir(folder_path):print(f"删除空目录: {folder_path}")os.rmdir(folder_path)if __name__ == "__main__":remove_empty_directories()

这个脚本使用os.walk函数遍历目录树,从底层向上遍历目录。对于每个目录,它检查是否为空,如果是,则删除该目录。

4.为当前位置下的子文件夹  在/home/link/中的同名子文件夹内  创建软连接,软连接的名称是abcd

import os# 获取当前目录
current_dir = os.getcwd()# 设置链接目录
link_dir = "/home/link"# 遍历当前目录中的子目录
for dir_name in os.listdir(current_dir):# 检查是否是目录if os.path.isdir(os.path.join(current_dir, dir_name)):# 构建软链接的目标路径link_target = os.path.join(link_dir, dir_name, "abcd")# 创建软链接os.symlink(os.path.join(current_dir, dir_name), link_target)print(f"Created symlink for {dir_name} in {link_target}")

5.为当前位置中所有文件夹内的同名子文件夹批量创建软连接,软连接名称以父文件夹来命名

编写一个python脚本,其功能是: 检查当前位置所有文件夹内是否有名称为abc的子文件夹,如果有,则在/home/link/中为子文件夹abc创建软链接,软链接的名称为其父文件夹的名称

import os# 获取当前目录
current_dir = os.getcwd()# 设置链接目录
link_dir = "/home/link"# 遍历当前目录中的子目录
for dir_name in os.listdir(current_dir):dir_path = os.path.join(current_dir, dir_name)abc_dir_path = os.path.join(dir_path, "abc")# 检查是否是目录且 abc 子目录存在if os.path.isdir(dir_path) and os.path.exists(abc_dir_path) and os.path.isdir(abc_dir_path):# 构建软链接的目标路径link_target = os.path.join(link_dir,  dir_name)# 创建软链接os.symlink(abc_dir_path, link_target)print(f"Created symlink for {abc_dir_path} in {link_target}")

 例如,/home/test/中有两个文件夹 公司A 公司B,他们都有同样的文件夹abc,则运行该脚本后,会/home/link/中生成 公司A 公司B 两个软链接文件,分别指向各自文件夹内的 abc

该用法适用的场景: 在Company文件夹中有100个以公司名称命名的文件夹,每个公司的文件夹中,是以各种业务名称命名的子文件夹;如果想对各个公司的同一个项目创建软连接到Projetc文件夹中,则采用该脚本;这样在 Projetc/项目X/ 文件家内,就会出现以各个公司名为文件夹的软连接。

6. 查找具有相同名称关键字的文件夹

其功能是: 比较 /home/A 和 /home/B 两个文件夹内的文件夹名称,如果任意两个文件夹名称中有3个以上的中文字符相同,则在a.txt文本中的同一行记录正两个文件夹的路径

import osdef get_chinese_characters(s):return [c for c in s if '\u4e00' <= c <= '\u9fff']def compare_folders(folder_a, folder_b, output_file):folders_a = os.listdir(folder_a)folders_b = os.listdir(folder_b)with open(output_file, 'w', encoding='utf-8') as output:for folder_name_a in folders_a:for folder_name_b in folders_b:chinese_chars_a = set(get_chinese_characters(folder_name_a))chinese_chars_b = set(get_chinese_characters(folder_name_b))common_chars = chinese_chars_a.intersection(chinese_chars_b)if len(common_chars) >= 3:path_a = os.path.join(folder_a, folder_name_a)path_b = os.path.join(folder_b, folder_name_b)output.write(f'{path_a}\t{path_b}\n')if __name__ == "__main__":folder_a_path = "/home/A"folder_b_path = "/home/B"output_file_path = "a.txt"compare_folders(folder_a_path, folder_b_path, output_file_path)print("Comparison completed. Results saved in a.txt.")

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

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

相关文章

Android自动化测试中使用ADB进行网络状态管理!

技术分享&#xff1a;使用ADB进行Android网络状态管理 Android自动化测试中的网络状态切换是提高测试覆盖率、捕获潜在问题的关键步骤之一&#xff0c;本文将介绍 如何使用ADB检测和管理Android设备的网络状态。 自动化测试中的网络状态切换变得尤为重要。 网络状态查询 adb s…

【23真题】复录比高达2.24,但题目很棒!

今天分享的是23年广东工业837的信号与系统试题及解析。注意官方不公示真题&#xff0c;所以这套试卷为回忆版本。 本套试卷难度分析&#xff1a;22年广东工业837考研真题&#xff0c;我也发布过&#xff0c;若有需要&#xff0c;戳这里自取&#xff01;平均分107.93&#xff…

Java中的Lambda表达式

lambda表达式是一个可传递的代码块&#xff0c;可以在以后执行一次或多次。 1.lambda表达式的语法 eg&#xff1a;有如下lambda表达式&#xff1a; (int a, int b) -> {return ab}; 这个表达式的本质是一个函数。 一般的函数类似如下&#xff1a; int add(int a, int …

我的创作纪念日--成为创作者的 第1825天(5年) 啦

醉颜凉 &#xff0c;不知不觉今天已经是你成为创作者的 第1825天&#xff08;5年&#xff09; 啦。 机缘 1、作为一个创作者&#xff0c;我最初成为创作者的初心是出于对技术的热爱和对分享的渴望。我希望通过创作&#xff0c;将自己在实战项目中的经验分享给大家&#xff0c;…

ECONGU4280 Corporate Finance

ECONGU4280 Corporate Finance WeChat: zh6-86

P8649 [蓝桥杯 2017 省 B] k 倍区间(前缀和+优化(桶分类))

分析&#xff1a; &#xff08;1&#xff09;任意连续子序列可用两个前缀和的差来表示 &#xff08;2&#xff09;判断该子序列是否为k的倍数 p1-p2 模 0 (mod k) 等价于&#xff1a;前缀和模 k 是否同余 &#xff08;3&#xff09;同余的任意两前缀和组合的序列均满足…

WEB安全之Python

WEB安全之python python-pyc反编译 python类似java一样&#xff0c;存在编译过程&#xff0c;先将源码文件*.py编译成 *.pyc文件&#xff0c;然后通过python解释器执行 生成pyc文件 创建一个py文件随便输入几句代码(1.py) 通过python交互终端 >>>import py_compil…

CISO在2024年应该优先考虑七项安全任务

专业安全媒体CyberTalk.org主编Shira Landau日前表示&#xff1a;现代企业的CISO们在2024年必须做出改变&#xff0c;要更多关注于企业整体安全路线图的推进与实现&#xff0c;让网络安全工作与业务发展目标保持更紧密的一致性。 首席信息安全官&#xff08;CISO&#xff09;是…

采购业务中的组织概述

目录 一、采购和库存管理中组织单位的概览二、企业的组织结构三、采购中组织结构3.1采购组织3.2采购组 一、采购和库存管理中组织单位的概览 1、 客户端&#xff1a;在SAP ERP系统中&#xff0c;客户端通过三位数字定义&#xff0c;并代表这独立的数据记录和独立的业务流程。客…

JavaScript WebApi 一(详讲)

基础知识在前面的部分已经讲过了&#xff0c;大家如果没有学习过JavaScript的可以去看一下 1.DOM 引入 在JavaScript中&#xff0c;DOM&#xff08;文档对象模型&#xff09;提供了一种表示和操作HTML文档的方式。在DOM中&#xff0c;文档被表示为一个由节点组成的树形结构。…

nodejs最新电商jd m端h5st 4.2签名算法4.2版本逆向,jd API接口,jd商品数据采集

前言&#xff1a; jd m端使用最新的h5st 4.2签名算法&#xff0c;与h5st 4.1版本有很大的不同。在这儿分析一下&#xff0c;供大家参考。 一、目标地址(Base64解码) aHR0cHM6Ly9zby5tLmpkLmNvbS93YXJlL3NlYXJjaC5hY3Rpb24/a2V5d29yZD0lRTklOTklQTQlRTYlQjklQkYlRTYlOUMlQkEmc2…

java编程:给定⼀组正整数数组M,找出M数组中N项和为给定数S。如果有多对N项数字的和都等于 S,则输出N个数的乘积最⼩的哪⼀项,没有则返回空

题目&#xff1a; 编程题&#xff1a;给定⼀组正整数数组M&#xff0c;找出M数组中N项和为给定数S。如果有多对N项数字的和都等于 S&#xff0c;则输出N个数的乘积最⼩的哪⼀项&#xff0c;没有则返回空&#xff1b; 程序如下&#xff1a; 测试主程序&#xff1a; 先看下测试示…

Linux系统centos7防火墙firewall开放IP及端口命令

CentOS7使用的是firewall防火墙&#xff0c;不再是原来的iptables 防火墙基础命令 1&#xff1a;查看firewall防火墙状态 firewall-cmd --state //或 systemctl status firewalld2&#xff1a;打开防火墙 systemctl start firewalld3&#xff1a;关闭防火墙 systemctl sto…

如何利用CHAT 进行扩写?

问CHAT&#xff1a;开发利用这些矿产资源的同时&#xff0c;我们也不能忽视环境保护的重要性。要以科学、合理、绿色环保的原则为指导&#xff0c;保护好帕米尔高原的生态环境&#xff0c;实现其可持续发展&#xff0c;以取得全局上的真正利益&#xff0c;按照以上文字进行简单…

esp32-s3部署yolox_nano进行目标检测

ESP32-S3部署yolox_nano进行目标检测 一、生成模型部署项目01 环境02 配置TVM包03 模型量化3.1预处理3.2 量化 04 生成项目 二、烧录程序 手上的是ESP32-S3-WROOM-1 N8R8芯片&#xff0c;整个链路跑通了&#xff0c;但是识别速度太慢了&#xff0c;20秒一张图&#xff0c;所以暂…

3D数字孪生场景编辑器

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 数字孪生的强大功能来自于将真实世界的资产与真实世界的数据联系起来&#xff0c;因此您可以…

C# WPF上位机开发(开篇)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 之前很少用到c#语言&#xff0c;大部分时间都用c/c&#xff0c;主要是它可以兼顾上位机qt开发以及嵌入式开发。所以&#xff0c;用c/c是比较合理的…

Vue3-路由

VueRouter4路由语法解析 1.创建路由实例由createRouter实现 2.路由模式 1&#xff09;history模式使用createWebHistory()&#xff1a;地址栏不带# 2&#xff09;hash模式使用createWebHashHistory()&#xff1a;地址栏带# 3&#xff09;参数是基础路径&#xff0c;默认/ …

latex中算法的几种模板

latex中算法的几种模板_latex算法模板-CSDN博客文章浏览阅读6.2k次&#xff0c;点赞3次&#xff0c;收藏45次。latex中几种算法模板_latex算法模板https://blog.csdn.net/weixin_50514171/article/details/125136121?spm1001.2014.3001.5506

【JavaEE】多线程 (2) --线程安全

目录 1. 观察线程不安全 2. 线程安全的概念 3. 线程不安全的原因 4. 解决之前的线程不安全问题 5. synchronized 关键字 - 监视器锁 monitor lock 5.1 synchronized 的特性 5.2 synchronized 使⽤⽰例 1. 观察线程不安全 package thread; public class ThreadDemo19 {p…