批量給文件夾添加文件v2【件批量復制工具】

代碼功能介紹

這個代碼的功能就是一個,給某個文件夾里面添加某個文件(含父級文件夾下的每一個子文件夾)
舉個例子,父級文件夾是:“D:\Desktop\1,要添加的文件路徑是:D:\1.txt”

則最后會把文件1.txt復制到文件夾D:\Desktop\1里面去。

文末提供源碼和打包成品

代碼界面截圖

在這里插入圖片描述
下面是現成的源碼

import sys
import os
import shutil
import webbrowser
from PyQt5.QtWidgets import (QApplication, QMainWindow, QPushButton, QLabel, QLineEdit, QVBoxLayout, QHBoxLayout, QWidget, QTextEdit, QMessageBox, QFileDialog)
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QFont, QPalette, QColorclass FileCopyTool(QMainWindow):def __init__(self):super().__init__()# 定義顏色常量self.BUTTON_BLUE = QColor(33, 150, 243)     # 按鈕藍色(#2196F3)self.BUTTON_GREEN = QColor(76, 175, 80)     # 按鈕綠色(#4CAF50)self.BUTTON_RED = QColor(244, 67, 54)       # 按鈕紅色(#f44336)self.LINE_EDIT_BG = QColor(245, 245, 245)   # 文本框背景色(淺灰色)self.folder_list = []  # 存儲多個文件夾路徑self.initUI()def initUI(self):# 設置窗口標題和大小self.setWindowTitle('文件批量復制工具@阿幸')self.setGeometry(100, 100, 900, 600)self.setMinimumSize(800, 500)# 創建中心部件central_widget = QWidget()self.setCentralWidget(central_widget)# 主布局main_layout = QVBoxLayout(central_widget)main_layout.setContentsMargins(15, 15, 15, 15)main_layout.setSpacing(12)# 批量文件夾區域batch_folder_layout = QHBoxLayout()batch_folder_layout.setSpacing(10)self.batch_folder_label = QLabel('文件夾路徑:')self.batch_folder_label.setFont(QFont("Microsoft YaHei", 10))self.batch_folder_label.setFixedWidth(100)self.batch_folder_label.setAlignment(Qt.AlignVCenter | Qt.AlignRight)self.batch_folder_edit = QLineEdit()self.setup_line_edit_bg(self.batch_folder_edit)self.batch_folder_edit.setFont(QFont("Microsoft YaHei", 10))# 設置默認文件夾路徑self.default_folder = r"D:\Desktop\文件存儲"# 檢查默認路徑是否存在if os.path.exists(self.default_folder):self.folder_list = [self.default_folder]self.batch_folder_edit.setText(self.default_folder)else:self.batch_folder_edit.setPlaceholderText("已選擇 0 個文件夾")self.batch_folder_edit.setReadOnly(True)self.batch_folder_btn = self.create_browse_button("瀏覽", self.select_batch_folders, self.BUTTON_GREEN)self.clear_batch_btn = self.create_browse_button("清空", self.clear_batch_folders, self.BUTTON_RED)batch_folder_layout.addWidget(self.batch_folder_label)batch_folder_layout.addWidget(self.batch_folder_edit, 1)batch_folder_layout.addWidget(self.batch_folder_btn)batch_folder_layout.addWidget(self.clear_batch_btn)# 源文件路徑區域source_file_layout = QHBoxLayout()source_file_layout.setSpacing(10)self.source_file_label = QLabel('文件路徑:')self.source_file_label.setFont(QFont("Microsoft YaHei", 10))self.source_file_label.setFixedWidth(100)self.source_file_label.setAlignment(Qt.AlignVCenter | Qt.AlignRight)self.source_file_edit = QLineEdit()self.setup_line_edit_bg(self.source_file_edit)self.source_file_edit.setFont(QFont("Microsoft YaHei", 10))self.source_file_edit.setText(r"D:\1.txt")self.source_file_btn = self.create_browse_button("瀏覽", self.select_source_file, self.BUTTON_BLUE)source_file_layout.addWidget(self.source_file_label)source_file_layout.addWidget(self.source_file_edit, 1)source_file_layout.addWidget(self.source_file_btn)# 功能按鈕區域button_layout = QHBoxLayout()button_layout.setSpacing(20)button_layout.setContentsMargins(0, 5, 0, 5)self.copy_button = QPushButton('開始批量復制')self.copy_button.setFont(QFont("Microsoft YaHei", 12, QFont.Bold))self.copy_button.setFixedSize(150, 40)self.copy_button.clicked.connect(self.start_copy)self.setup_button_style(self.copy_button, self.BUTTON_BLUE)self.advanced_button = QPushButton('高級功能')self.advanced_button.setFont(QFont("Microsoft YaHei", 12, QFont.Bold))self.advanced_button.setFixedSize(120, 40)self.advanced_button.clicked.connect(self.open_advanced)self.setup_button_style(self.advanced_button, self.BUTTON_GREEN)button_layout.addStretch(1)button_layout.addWidget(self.copy_button, alignment=Qt.AlignCenter)button_layout.addWidget(self.advanced_button, alignment=Qt.AlignCenter)button_layout.addStretch(1)# 日志顯示區域log_container = QVBoxLayout()log_container.setSpacing(5)self.log_label = QLabel('操作日志:')self.log_label.setFont(QFont("Microsoft YaHei", 10, QFont.Bold))self.log_text = QTextEdit()self.log_text.setReadOnly(True)self.log_text.setFont(QFont("Microsoft YaHei", 10))self.setup_line_edit_bg(self.log_text)log_container.addWidget(self.log_label)log_container.addWidget(self.log_text)# 添加所有組件到主布局main_layout.addLayout(batch_folder_layout)main_layout.addLayout(source_file_layout)main_layout.addLayout(button_layout)main_layout.addLayout(log_container, 1)def create_browse_button(self, text, callback, color):"""創建統一風格的按鈕"""button = QPushButton(text)button.setFont(QFont("Microsoft YaHei", 10, QFont.Bold))button.setFixedWidth(80)button.clicked.connect(callback)self.setup_button_style(button, color)return buttondef setup_line_edit_bg(self, widget):"""設置文本框背景顏色"""palette = widget.palette()palette.setColor(QPalette.Base, self.LINE_EDIT_BG)palette.setColor(QPalette.Text, QColor(0, 0, 0))widget.setPalette(palette)widget.setAutoFillBackground(True)def setup_button_style(self, button, base_color):"""設置按鈕樣式"""button.setStyleSheet(f"""QPushButton {{background-color: rgb({base_color.red()}, {base_color.green()}, {base_color.blue()});color: white;border: none;padding: 5px;border-radius: 4px;}}QPushButton:hover {{background-color: rgb({int(base_color.red()*0.8)}, {int(base_color.green()*0.8)}, {int(base_color.blue()*0.8)});}}QPushButton:pressed {{background-color: rgb({int(base_color.red()*0.7)}, {int(base_color.green()*0.7)}, {int(base_color.blue()*0.7)});}}""")button.setFocusPolicy(Qt.NoFocus)# 文件夾選擇功能def select_batch_folders(self):"""選擇多個文件夾并顯示路徑"""folder = QFileDialog.getExistingDirectory(self, "選擇文件夾", self.default_folder)if folder:if folder not in self.folder_list:self.folder_list.append(folder)# 顯示所有已選擇的文件夾路徑,用分號分隔self.batch_folder_edit.setText("; ".join(self.folder_list))QMessageBox.information(self, '成功', f'已添加 {len(self.folder_list)} 個文件夾')def clear_batch_folders(self):"""清空已選擇的批量文件夾"""self.folder_list.clear()self.batch_folder_edit.clear()self.batch_folder_edit.setPlaceholderText("已選擇 0 個文件夾")QMessageBox.information(self, '提示', '已清空所有選擇的文件夾')# 文件選擇功能def select_source_file(self):file, _ = QFileDialog.getOpenFileName(self, "選擇源文件", os.path.dirname(self.source_file_edit.text()))if file:self.source_file_edit.setText(file)def start_copy(self):"""批量復制邏輯"""source_file = self.source_file_edit.text().strip()# 驗證源文件if not source_file or not os.path.isfile(source_file):QMessageBox.warning(self, '文件錯誤', '請輸入有效的源文件路徑')return# 驗證批量文件夾if not self.folder_list:QMessageBox.warning(self, '路徑錯誤', '請選擇至少一個文件夾')returnself.log_text.clear()try:# 遍歷所有目標文件夾for folder in self.folder_list:# 復制文件到每個目標文件夾的子文件夾中for root, dirs, files in os.walk(folder):for dir in dirs:dest_path = os.path.join(root, dir, os.path.basename(source_file))try:shutil.copy2(source_file, dest_path)self.log_text.append(f"已復制到:{dest_path}")except Exception as e:self.log_text.append(f"復制失敗到 {dest_path}: {e}")QMessageBox.information(self, '完成', '批量復制操作已完成')except Exception as e:QMessageBox.critical(self, '錯誤', f'操作過程中發生錯誤: {str(e)}')def open_advanced(self):webbrowser.open("你自己的")if __name__ == '__main__':app = QApplication(sys.argv)app.setStyle("Fusion")window = FileCopyTool()window.show()sys.exit(app.exec_())

源碼打包

1、你需要安裝Python(不會安裝的自行解決)

2、下載我提供的源碼文件

3、將源碼文件放在Python路徑下

4、打開cmd界面,輸入:“D:\Program Files (x86)\biancheng\python3113\python.exe” -m PyInstaller --onefile --windowed “D:\Program Files (x86)\biancheng\python3113\批量給文件夾添加文件v2.py”

其中D:\Program Files (x86)\biancheng\python3113要替換為你自己的Python路徑

成品下載

如果你不會打包,就直接用我寫的吧。
夸克

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/95417.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/95417.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/95417.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Qt實現2048小游戲:看看AI如何評估棋盤策略實現“人機合一

2048 是一款經典的數字益智游戲,其簡單的規則背后蘊含著豐富的策略性。該項目不僅完整實現了 2048 的核心玩法,還包含了一個基于啟發式評估和蒙特卡洛方法的智能 AI 玩家。 我們將從項目整體架構入手,逐一解析游戲核心邏輯、UI 渲染、事件處理、AI 策略等關鍵模塊,并通過展…

封裝紅黑樹實現mysetmymap

1. 源碼分析 set實例化rb_tree時第二個模板參數給的是key&#xff0c;map實例化rb_tree時第?個模板參數給的是 pair<const key,T>&#xff0c;這樣一顆紅黑樹既可以實現key搜索場景的set&#xff0c;也可以實現key/value搜索場 景的map源碼里面模板參數是用T代表value&…

以OWTB為核心以客戶為基礎的三方倉運配一體化平臺分析V0.2

一、系統概述以OWTB&#xff08;Order-Warehouse-Transportation-Billing&#xff0c;訂單-倉儲-運輸-結算&#xff09;為核心的三方倉運配一體化平臺&#xff0c;是專為第三方物流企業打造的深度定制化解決方案。該平臺以第三方倉運配為主線&#xff0c;以多客戶/多SKU/個性化…

技術框架之腳手架實現

一、 序言在日常的企業級Java開發中&#xff0c;我們經常會發現自己在重復地做著一些項目初始化工作&#xff1a;創建相似的項目結構、引入一堆固定的依賴包、編寫通用的配置文件、拷貝那些幾乎每個項目都有的基礎工具類和日志配置。這些工作不僅枯燥乏味&#xff0c;而且容易出…

小迪安全v2023學習筆記(七十七講)—— 業務設計篇隱私合規檢測重定向漏洞資源拒絕服務

文章目錄前記WEB攻防——第七十七天業務設計篇&隱私合規檢測&URL重定向&資源拒絕服務&配合項目隱私合規 - 判斷規則&檢測項目介紹案例演示URL重定向 - 檢測判斷&釣魚配合介紹黑盒測試看業務功能看參數名goole語法搜索白盒測試跳轉URL繞過思路釣魚配合資…

用AI做旅游攻略,真能比人肉整理靠譜?

大家好&#xff0c;我是極客團長&#xff01; 作為一個沉迷研究 “AI 工具怎么滲透日常生活” 的科技博主&#xff0c;我開了個 AI 解決生活小事系列。 前兩期聊了用 AI 寫新聞博客、扒商業報告&#xff0c;后臺一堆人催更&#xff1a;能不能搞點接地氣的&#xff1f;比如&am…

Axure RP 9 Mac 交互原型設計

原文地址&#xff1a;Axure RP 9 Mac 交互原型設計 安裝教程 Axure RP 9是一款功能強大的原型設計和協作工具。 它不僅能夠幫助用戶快速創建出高質量的原型設計&#xff0c;還能促進團隊成員之間的有效協作&#xff0c;從而極大地提高數字產品開發的效率和質量。 擁有直觀易…

多線程——線程狀態

目錄 1.線程的狀態 1.1 NEW 1.2 RUNNABLE 1.3 BLOCKED 1.4 WAITING 1.5 TIMED_WAITING 1.6 TERMINATED 2.線程狀態的相互轉換 在上期的學習中&#xff0c;已經理解線程的啟動&#xff08;start()&#xff09;、休眠&#xff08;sleep()&#xff09;、中斷&#xff08;i…

IMX6ULL的設備樹文件簡析

先分析一個完整的設備樹&#xff0c;是怎么表達各種外設信息的。以imux6ull開發板為例進行說明。這個文件里就一個設備信息才這么點內容&#xff0c;是不是出問題了&#xff1f;當然不是&#xff0c;我們知道dts文件是可包含的&#xff0c;所以&#xff0c;最終形成的一個完整文…

【ARM】PACK包管理

1、 文檔目標對 pack 包的管理有更多的了解。2、 問題場景客戶在安裝了過多的 pack 包導致軟件打開比較慢&#xff0c;各種 pack 包顏色的區別&#xff0c;及圖標不同。3、軟硬件環境1&#xff09;、軟件版本&#xff1a;Keil MDK 5.392&#xff09;、電腦環境&#xff1a;Wind…

【Kubernetes】知識點4

36. 說明K8s中Pod級別的Graceful Shutdown。答&#xff1a;Graceful Shutdown&#xff08;優雅關閉&#xff09;是指當 Pod 需要終止時&#xff0c;系統給予運行中的容器一定的時間來等待業務的應用的正常關閉&#xff08;如保存數據、關閉連接、釋放資源等&#xff09;&#x…

Paraverse平行云實時云渲染助力第82屆威尼斯電影節XR沉浸式體驗

今年&#xff0c;Paraverse平行云實時云渲染平臺LarkXR&#xff0c;為享有盛譽的第82屆威尼斯國際電影節&#xff08;8月27日至9月6日&#xff09;帶來沉浸式體驗。 LarkXR助力我們的生態伙伴FRENCH TOUCH FACTORY&#xff0c;實現ITHACA容積視頻的XR交互演示&#xff0c;從意大…

大數據開發計劃表(實際版)

太好了&#xff01;我將為你生成一份可打印的PDF版學習計劃表&#xff0c;并附上項目模板與架構圖示例&#xff0c;幫助你更直觀地執行計劃。 由于當前環境無法直接生成和發送文件&#xff0c;我將以文本格式為你完整呈現&#xff0c;你可以輕松復制到Word或Markdown中&#xf…

GitLab 18.3 正式發布,更新多項 DevOps、CI/CD 功能【二】

沿襲我們的月度發布傳統&#xff0c;極狐GitLab 發布了 18.3 版本&#xff0c;該版本帶來了通過直接轉移進行遷移、CI/CD 作業令牌的細粒度權限控制、自定義管理員角色、Kubernetes 1.33 支持、通過 API 讓流水線執行策略訪問 CI/CD 配置等幾十個重點功能的改進。下面是對部分重…

Docker學習筆記(二):鏡像與容器管理

Docker 鏡像 最小的鏡像 hello-world 是 Docker 官方提供的一個鏡像&#xff0c;通常用來驗證 Docker 是否安裝成功。 先通過 docker pull 從 Docker Hub 下載它。 [rootdocker ~]# docker pull hello-world Using default tag: latest latest: Pulling from library/hello-wor…

STM32F103C8T6開發板入門學習——寄存器和庫函數介紹

學習目標&#xff1a;STM32F103C8T6開發板入門學習——寄存器和庫函數介紹學習內容&#xff1a; 1. 寄存器介紹 1.1 存儲器映射 存儲器本身無固有地址&#xff0c;是具有特定功能的內存單元。它的地址是由芯片廠商或用戶分配&#xff0c;給存儲器分配地址的過程就叫做存儲區映射…

【CouponHub項目開發】使用RocketMQ5.x實現延時修改優惠券狀態,并通過使用模板方法模式重構消息隊列發送功能

在上個章節中我實現了創建優惠券模板的功能&#xff0c;但是&#xff0c;優惠券總會有過期時間&#xff0c;我們怎么去解決到期自動修改優惠券狀態這樣一個功能呢&#xff1f;我們可以使用RocketMQ5.x新出的任意定時發送消息功能來解決。 初始方案&#xff1a;首先在創建優惠券…

Claude Code SDK 配置Gitlab MCP服務

一、MCP配置前期準備 &#xff08;一&#xff09;創建個人令牌/群組令牌 我這里是創建個人令牌&#xff0c;去到首頁左上角&#xff0c;點擊頭像——>偏好設置——>訪問令牌——>添加新令牌 &#xff08;二&#xff09;配置mcp信息 去到魔塔社區&#xff0c;點擊mc…

Eclipse 常用搜索功能匯總

Eclipse 常用搜索功能匯總 Eclipse 提供了多種搜索功能&#xff0c;幫助開發者快速定位代碼、文件、類、方法、API 等資源。以下是詳細的使用方法和技巧。 一、常用搜索快捷鍵快捷鍵功能描述Ctrl H打開全局搜索對話框&#xff0c;支持文件、Java 代碼、任務等多種搜索。Ctrl …

關于Spring的一些理解

Spring整體結構&#xff1a;Spring實際運行場景&#xff1a;基礎 Spring啟動過程 傳統Spring&#xff1a; &#xff08;1&#xff09;初始化準備階段 &#xff08;2&#xff09;容器創建與注入 &#xff08;3&#xff09;Bean工廠后置處理 &#xff08;4&#xff09;Bean工廠后…