Avevo bisogno di qualcosa di un po 'più generico, ovvero spostare tutti i file da tutte le [sotto] + cartelle nella cartella principale.
Per esempio iniziare con:
root_folder
|----test1.txt
|----1
|----test2.txt
|----2
|----test3.txt
e finire con:
root_folder
|----test1.txt
|----test2.txt
|----test3.txt
Una funzione ricorsiva rapido fa il trucco:
import os, shutil, sys
def move_to_root_folder(root_path, cur_path):
for filename in os.listdir(cur_path):
if os.path.isfile(os.path.join(cur_path, filename)):
shutil.move(os.path.join(cur_path, filename), os.path.join(root_path, filename))
elif os.path.isdir(os.path.join(cur_path, filename)):
move_to_root_folder(root_path, os.path.join(cur_path, filename))
else:
sys.exit("Should never reach here.")
# remove empty folders
if cur_path != root_path:
os.rmdir(cur_path)
Di solito chiamarla con il stesso argomento per root_path
e cur_path
, ad es. move_to_root_folder(os.getcwd(),os.getcwd())
se vuoi provarlo nell'ambiente python.
Cosa hai provato? 'shutil.move (src, dst)' la documentazione dice "Spostare ricorsivamente un file o una directory (src) in un'altra posizione (dst)", quindi dovrebbe funzionare. – jcollado