python - पायथन का उपयोग करके एक निर्देशिका में कई फ़ाइलों का नाम बदलना




directory rename (4)

मैं इस पायथन स्क्रिप्ट का उपयोग करके एक निर्देशिका में कई फ़ाइलों का नाम बदलने की कोशिश कर रहा हूं:

import os
path = '/Users/myName/Desktop/directory'
files = os.listdir(path)
i = 1

for file in files:
    os.rename(file, str(i)+'.jpg')
    i = i+1

जब मैं यह स्क्रिप्ट चलाता हूं, तो मुझे निम्न त्रुटि मिलती है:

Traceback (most recent call last):
  File "rename.py", line 7, in <module>
    os.rename(file, str(i)+'.jpg')
OSError: [Errno 2] No such file or directory

ऐसा क्यों है? कैसे मैं इस मुद्दे को हल कर सकता हूँ?

धन्यवाद।


@ Daniel की टिप्पणी के अनुसार, os.listdir () केवल फ़ाइल नाम देता है और फ़ाइल का पूर्ण पथ नहीं है। पूर्ण पथ प्राप्त करने और नाम बदलने के लिए os.path.join (पथ, फ़ाइल) का उपयोग करें।

import os
path = 'C:\\Users\\Admin\\Desktop\\Jayesh'
files = os.listdir(path)
for file in files:
   os.rename(os.path.join(path, file), os.path.join(path, 'xyz_' + file + '.csv'))

अगर आपकी फाइलें रैंडम तरीके से नाम बदल रही हैं तो आपको पहले डायरेक्टरी में फाइलों को सॉर्ट करना होगा। पहले दिए गए कोड को फिर फ़ाइलों का नाम बदलें।

import os
import re
path = 'target_folder_directory'
files = os.listdir(path)
files.sort(key=lambda var:[int(x) if x.isdigit() else x for x in re.findall(r'[^0-9]|[0-9]+', var)])
for i, file in enumerate(files):
    os.rename(path + file, path + "{}".format(i)+".jpg")

नाम बदलने के दौरान आप पूरा रास्ता नहीं दे रहे हैं, इसे इस तरह से करें:

import os
path = '/Users/myName/Desktop/directory'
files = os.listdir(path)


for index, file in enumerate(files):
    os.rename(os.path.join(path, file), os.path.join(path, ''.join(str(index), '.jpg')))

संपादित करें : tavo के लिए धन्यवाद, पहला समाधान फ़ाइल को वर्तमान निर्देशिका में ले जाएगा, जो ठीक हो गई है।


मैंने मतभेदों को प्रदर्शित करने, पुष्टिकरण और नाम बदलने का ध्यान रखने के लिए एक त्वरित और लचीली स्क्रिप्ट पर काम किया। यदि आपको एक कार्यशील समाधान की आवश्यकता है, तो आप इस स्क्रिप्ट को कॉपी कर सकते हैं और इसे उस फ़ोल्डर में रख सकते हैं, जिसे आप फ़ाइलों का नाम बदलना चाहते हैं। https://gist.github.com/aljgom/81e8e4ca9584b481523271b8725448b8

यह फ़ाइलों का नाम बदलकर वर्तमान निर्देशिका में "नाम बदलकर कार्य करता है", प्रत्येक फ़ंक्शन एक बदलाव का ख्याल रख सकता है। फिर उन परिवर्तनों को निर्धारित करता है जो प्रत्येक फ़ंक्शन रंगों का उपयोग करके अंतर बनाता है और प्रदर्शित करता है, और परिवर्तनों को करने के लिए पुष्टि करने के लिए कहता है। Pycharm पर काम करता है, यह विभिन्न शान्ति में परीक्षण नहीं किया है







rename