Mam kilka plików w kilku folderach tak:Jak przenosić i zmieniać nazwy dokumentów umieszczonych w kilku zagnieżdżonych folderach w nowym pojedynczym folderze z pythonem?
dir
├── 0
│ ├── 103425.xml
│ ├── 105340.xml
│ ├── 109454.xml
│
│── 1247
│ └── doc.xml
├── 14568
│ └── doc.xml
├── 1659
│ └── doc.xml
├── 10450
│ └── doc.xml
├── 10351
│ └── doc.xml
Jak można wyodrębnić wszystkie dokumenty w jednym folderze dołączenie nazwy folderu dla każdego przeniósł dokument:
new_dir
├── 0_103425.xml
├── 0_105340.xml
├── 0_109454.xml
├── 1247_doc.xml
├── 14568_doc.xml
├── 1659_doc.xml
├── 10450_doc.xml
├── 10351_doc.xml
starałem się wyodrębnić im z:
import os
for path, subdirs, files in os.walk('../dir/'):
for name in files:
print(os.path.join(path, name))
UPDATE
Również próbowałem:
import os, shutil
from glob import glob
files = []
start_dir = os.getcwd()
pattern = "*.xml"
for dir,_,_ in os.walk('../dir/'):
files.extend(glob(os.path.join(dir,pattern)))
for f in files:
print(f)
shutil.move(f, '../dir/')
Powyższy dał mi ścieżkę każdego pliku. Jednak nie rozumiem, jak zmienić nazwę i przenieść je:
---------------------------------------------------------------------------
Error Traceback (most recent call last)
<ipython-input-50-229e4256f1f3> in <module>()
10 for f in files:
11 print(f)
---> 12 shutil.move(f, '../dir/')
/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/shutil.py in move(src, dst, copy_function)
540 real_dst = os.path.join(dst, _basename(src))
541 if os.path.exists(real_dst):
--> 542 raise Error("Destination path '%s' already exists" % real_dst)
543 try:
544 os.rename(src, real_dst)
Error: Destination path '../data/230948.xml' already exists
Powyższy błąd pokazuje, dlaczego chciałbym zmienić nazwę tego folderu.
Wow .... to było łatwiejsze, nie wiedziałem o 'pathlib'. – tumbleweed
Dodałem także, jak można to zrobić za pomocą shutil, os i glob. –
Jestem w python3 faktycznie! – tumbleweed