উত্তর:
ব্যবহার 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
।
পাইথন ৩.৪ অনুসারে এটি সমাধানের জন্য প্যাথলিব মডিউলটি ব্যবহার করতে পারেন ।
আপনি যদি পুরানো সংস্করণে থেকে থাকেন তবে আপনি এখানে পাওয়া ব্যাকপোর্ট করা সংস্করণটি ব্যবহার করতে পারেন
ধরে নেওয়া যাক আপনি মূল পথে নেই (কেবলমাত্র এতে কিছুটা অসুবিধা যুক্ত করার জন্য) আপনি নাম পরিবর্তন করতে চান এবং একটি পুরো পথ সরবরাহ করতে হবে, আমরা এটি দেখতে পারি:
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
আমরা একটি সাধারণ স্ট্রিং ম্যানিপুলেশন দিয়ে আমাদের পরিবর্তনটি সম্পাদন করতে পারি:
পাইথন ৩.6 এবং এর চেয়ে বড় এফ স্ট্রিং ব্যবহার করুন!
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))
আরও শীঘ্রই এর সরলতা প্রদর্শন করতে:
পাইথন ৩.6++:
from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, f"{p.stem}_1_{p.suffix}"))
পাইথন ৩.6 এর চেয়ে কম সংস্করণগুলি তার পরিবর্তে স্ট্রিং বিন্যাস পদ্ধতি ব্যবহার করে:
from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, "{}_{}_{}".format(p.stem, 1, p.suffix))
pathlib
পাঠাগারটি পাইথন ৩.৪ এ প্রবর্তিত হয়েছে সুতরাং উত্তরটি ভাগ করে নেওয়া আরও জটিল প্রয়োজনীয়তার জন্য তার বহুমুখিতা এবং ব্যবহারের প্রদর্শন করার জন্য একটি শক্ত মডিউলটির জন্য এক্সপোজার সরবরাহ করে।
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('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+