要实现复制文件夹到指定文件夹的功能,你可以使用shutil.copytree()
函数。以下是更新后的代码示例:
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QFileDialog
import shutil
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("File Saving Example")
# 创建按钮并连接槽函数
self.button = QPushButton("Select Files and Folders", self)
self.button.clicked.connect(self.save_files_and_folders)
def save_files_and_folders(self):
# 打开文件对话框选择要保存的文件和文件夹
file_dialog = QFileDialog()
file_dialog.setFileMode(QFileDialog.ExistingFiles | QFileDialog.Directory)
if file_dialog.exec():
files_and_folders = file_dialog.selectedFiles()
# 指定保存图片、文本和文件夹的目标路径
image_folder = "path/to/image/folder"
text_folder = "path/to/text/folder"
folder_destination = "path/to/destination/folder"
for item in files_and_folders:
if item.endswith(".txt"):
dest_path = f"{text_folder}/{os.path.basename(item)}"
shutil.copy(item, dest_path) # 复制文本文件
elif os.path.isdir(item):
folder_name = os.path.basename(item)
dest_path = f"{folder_destination}/{folder_name}"
shutil.copytree(item, dest_path) # 复制整个文件夹
if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window.show()
app.exec()
这样修改后,你就可以选择文件、文件夹以及文件夹中的所有内容,然后将它们保存到不同的目标文件夹。其中,对于文本文件,仍然是使用shutil.copy()
函数进行复制;而对于文件夹,则使用shutil.copytree()
函数来递归复制整个文件夹。
请确保指定的目标文件夹已经存在,并且避免将源文件或源文件夹复制到相同的目标位置,以防止出现意外结果。
希望这能满足你的需求!如有其他问题,请随时提问。
内容由零声教学AI助手提供,问题来源于学员提问