मैं इस तरह कई फ़ोल्डरों में कई फ़ाइलें:पाइथन के साथ एक नए एकल फ़ोल्डर में कई नेस्टेड फ़ोल्डर्स में रखे दस्तावेज़ों को कैसे स्थानांतरित और नामित करें?
dir
├── 0
│ ├── 103425.xml
│ ├── 105340.xml
│ ├── 109454.xml
│
│── 1247
│ └── doc.xml
├── 14568
│ └── doc.xml
├── 1659
│ └── doc.xml
├── 10450
│ └── doc.xml
├── 10351
│ └── doc.xml
मैं कैसे एक ही फ़ोल्डर प्रत्येक के लिए फ़ोल्डर का नाम जोड़कर में सभी दस्तावेजों निकाल सकते हैं चले गए दस्तावेज़:
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
मैं निकालने की कोशिश की उन लोगों के साथ:
import os
for path, subdirs, files in os.walk('../dir/'):
for name in files:
print(os.path.join(path, name))
अद्यतन
+०१२३५१६४१०६इसके अलावा, मैं करने की कोशिश की करने के लिए:
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/')
ऊपर मुझे प्रत्येक फ़ाइल का रास्ता दे दिया। हालांकि, मुझे समझ नहीं आता नाम बदलने और उन्हें ले जाने के लिए कैसे:
---------------------------------------------------------------------------
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
उपरोक्त त्रुटि से पता चलता कारण है कि मैं अपने फ़ोल्डर के साथ इसका नाम बदलना चाहते हैं।
वाह .... यह आसान था, मुझे 'pathlib' के बारे में पता नहीं था। – tumbleweed
मैंने यह भी जोड़ा कि आप इसे शटल, ओएस और ग्लोब के साथ कैसे कर सकते हैं। –
मैं वास्तव में python3 में हूँ! – tumbleweed