जवाबों:
उपयोग करें os.rename
:
import os
os.rename('a.txt', 'b.kml')
C:/folder/file.txt
विंडोज /home/file.txt
पर या लिनक्स / मैकओएस पर)।
OSError
विंडोज सिस्टम पर विफल हो जाएगा । os.path.exists
यह जांचने के लिए उपयोग किया जाना चाहिए कि क्या नाम बदलने से पहले लक्ष्य मौजूद है। यह बग का उपयोग करने के लिए "समय की जाँच करने का समय" बनाता है, लेकिन यह मुद्दों का कारण बनने की संभावना नहीं है। (मुझे इसके आस-पास कोई आसान रास्ता नहीं है - यहाँ देखें ।
os.replace
फ़ाइल एक निर्देशिका के अंदर हो सकती है, उस स्थिति में पथ निर्दिष्ट करें:
import os
old_file = os.path.join("directory", "a.txt")
new_file = os.path.join("directory", "b.kml")
os.rename(old_file, new_file)
import shutil
shutil.move('a.txt', 'b.kml')
यह एक फ़ाइल का नाम बदलने या स्थानांतरित करने के लिए काम करेगा।
shutil.move
परमाणु ऑपरेशन नहीं होने के कारण एक अच्छा विकल्प नहीं है। यदि फ़ाइल खुला है, उदाहरण के लिए, के shutil.move
साथ एक फ़ाइल बनाएगा new_name
, लेकिन फ़ाइल old_name
को दो फ़ाइलों के साथ छोड़कर नहीं हटाएगा। os.rename
दूसरी ओर कुछ भी नहीं करेगा, जो एक बेहतर विकल्प है । के साथ shutil.move
, भले ही आपने त्रुटि पकड़ी हो, फिर भी आपको दुष्ट फ़ाइल की जाँच और हटाने के बारे में चिंता करनी होगी। बेहतर उपकरण मौजूदos.rename
होने पर बस इसके लायक नहीं :।
पायथन 3.4 के रूप में कोई भी इसे हल करने के लिए पाथलिब मॉड्यूल का उपयोग कर सकता है ।
यदि आप पुराने संस्करण पर होते हैं, तो आप यहां पाए गए बैकपोर्ट संस्करण का उपयोग कर सकते हैं
मान लेते हैं कि आप रूट पथ में नहीं हैं (बस इसमें थोड़ी कठिनाई जोड़ने के लिए) आप का नाम बदलना चाहते हैं, और एक पूर्ण पथ प्रदान करना है, हम इस पर गौर कर सकते हैं:
some_path = 'a/b/c/the_file.extension'
तो, आप अपना रास्ता अपना सकते हैं और Path
उसमें से एक वस्तु बना सकते हैं :
from pathlib import Path
p = Path(some_path)
अभी हमारे पास मौजूद इस वस्तु के बारे में कुछ जानकारी देने के लिए, हम इसमें से चीजों को निकाल सकते हैं। उदाहरण के लिए यदि किसी भी कारण से हम से फ़ाइल नाम संशोधित करके फ़ाइल नाम बदलना चाहते हैं the_file
के लिए the_file_1
है, तो हम फ़ाइल नाम हिस्सा प्राप्त कर सकते हैं:
name_without_extension = p.stem
और फिर भी हाथ में एक्सटेंशन को पकड़ें:
ext = p.suffix
हम एक साधारण स्ट्रिंग हेरफेर के साथ अपना संशोधन कर सकते हैं:
अजगर 3.6 और अधिक से अधिक f- स्ट्रिंग्स का उपयोग करें!
new_file_name = f"{name_without_extension}_1"
अन्यथा:
new_file_name = "{}_{}".format(name_without_extension, 1)
और अब हम अपने द्वारा rename
बनाए गए पथ ऑब्जेक्ट पर विधि को कॉल करके अपना नाम बदल सकते हैं और हमारे द्वारा ext
दिए गए उचित नाम संरचना को पूरा करने के लिए संलग्न कर सकते हैं:
p.rename(Path(p.parent, new_file_name + ext))
अपनी सादगी दिखाने के लिए जल्द ही:
अजगर 3.6+:
from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, f"{p.stem}_1_{p.suffix}"))
पायथन 3.6 से कम संस्करण इसके बजाय स्ट्रिंग प्रारूप विधि का उपयोग करते हैं:
from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, "{}_{}_{}".format(p.stem, 1, p.suffix))
pathlib
पुस्तकालय को 3.4 3.4 में पेश किया गया है , इसलिए यहां जवाब साझा करना भी एक ठोस मॉड्यूल के लिए अपनी बहुमुखी प्रतिभा और अधिक जटिल आवश्यकताओं के उपयोग को प्रदर्शित करने के लिए जोखिम प्रदान करता है।
os.rename(old, new)
यह पायथन डॉक्स में पाया जाता है: http://docs.python.org/library/os.html
का उपयोग करें os.rename
। लेकिन आपको फ़ंक्शन के लिए दोनों फ़ाइलों का पूरा पथ पारित करना होगा। अगर मेरे पास a.txt
मेरे डेस्कटॉप पर एक फ़ाइल है तो मैं भी करूँगा और मुझे भी नामांकित फ़ाइल से भरा देना होगा।
os.rename('C:\\Users\\Desktop\\a.txt', 'C:\\Users\\Desktop\\b.kml')
import os
# Set the path
path = 'a\\b\\c'
# save current working directory
saved_cwd = os.getcwd()
# change your cwd to the directory which contains files
os.chdir(path)
os.rename('a.txt', 'b.klm')
# moving back to the directory you were in
os.chdir(saved_cwd)
chdir()
एक निर्देशिका के लिए नहीं कर सकते हैं , उदाहरण के लिए विंडोज के तहत क्या होता है जब यह एक यूएनसी है? और chdir()
इसके साइड-इफेक्ट्स हैं। मैं केवल os.rename()
सीधे पथ को निर्दिष्ट करना चाहूंगा , कोई chdir()
आईएनजी नहीं ।
आप कार्य पूरा करने के लिए टर्मिनल का उपयोग करने के लिए os.system का उपयोग कर सकते हैं:
os.system('mv oldfile newfile')
mv
एक फाइल को स्थानांतरित / नाम बदलने के लिए एक यूनिक्स बिलिन कमांडलाइन प्रोग्राम है।
import os
import re
from pathlib import Path
for f in os.listdir(training_data_dir2):
for file in os.listdir( training_data_dir2 + '/' + f):
oldfile= Path(training_data_dir2 + '/' + f + '/' + file)
newfile = Path(training_data_dir2 + '/' + f + '/' + file[49:])
p=oldfile
p.rename(newfile)
os.path
आधुनिक के साथ पुरानी शैली को मिलाना pathlib
काफी iffy है। pathlib
इसके बजाय सभी तरह से जाओ ।
import shutil
import os
files = os.listdir("./pics/")
for key in range(0, len(files)):
print files[key]
shutil.move("./pics/" + files[key],"./pics/img" + str(key) + ".jpeg")
यह करना चाहिए। अजगर 3+