Как я мог go это сделать? У меня есть большая папка с множеством подпапок и файлов, я хочу заменить несколько c папок и файлов на другие папки и файлы, хранящиеся где-то еще, которые содержат ту же файловую структуру.
BigFolder
|
|--Folder 1
|--Folder 2
|--Folder 3
|--Folder 4
|--File 1
|--File 2
"Backup 1"
|
|--Folder 1
|--Folder 3
|--File 2
"Backup 2"
|
|--Folder 1
|--Folder 3
|--File 2
"Backup 3"
|
|--Folder 1
|--Folder 3
|--File 2
Я заключил «резервное копирование» в кавычки, потому что это не настоящая цель этого, но, например, для целей это работает. Таким образом, я должен быть в состоянии захватить определенное c содержимое большой папки и поместить его в одну из резервных копий, затем взять другую резервную копию, захватить ее содержимое и перетащить в большую папку, в основном меняя их местами. Как я мог этого добиться? Я пробовал с shutil.copytree, но это вызывает ошибку, потому что папка, в которую я копирую, уже существует, действительно глупое ограничение. Я также пробовал использовать copytree distutils, но пока он работает, он не копирует нужные мне папки, а только их содержимое, поэтому не сохраняет файловую структуру.
import shutil
bigFolder = "/home/user/Big Folder"
def swapFiles(newFolder, prevFolder):
path = os.path
#Copy from big folder to the previous backup
shutil.copytree(path.join(bigFolder, "Folder 1"), prevFolder)
shutil.copytree(path.join(bigFolder, "Folder 3"), prevFolder)
shutil.copy(path.join(bigFolder, "File 2"), prevFolder)
#Copy from new folder to big folder
shutil.copytree(newFolder, bigFolder)
Это не работать, потому что папка назначения уже существует, она работает только с несуществующей папкой. С distutils:
from distutils.dir_util import copy_tree
import shutil
bigFolder = "/home/user/Big Folder"
def swapFiles(newFolder, prevFolder):
path = os.path
#Copy from big folder to the previous backup
copy_tree(path.join(bigFolder, "Folder 1"), prevFolder)
copy_tree(path.join(bigFolder, "Folder 3"), prevFolder)
shutil.copy(path.join(bigFolder, "File 2"), prevFolder) #shutil is fine here
#Copy from new folder to big folder
copy_tree(newFolder, bigFolder)
Это не работает, потому что копирует содержимое папок, а не саму папку, поэтому я не сохраняю файловую структуру.
Кстати , в середине двух процессов копирования я должен удалить файлы и папки, чтобы избежать слияния с файлами newFolder, но это не имеет отношения к вопросу.