shutil.move() ফাংশন কী?
shutil.move() পাইথনের shutil মডিউলের একটি ফাংশন যা ফাইল বা ডিরেক্টরি এক লোকেশন থেকে অন্য লোকেশনে সরানোর (move) জন্য ব্যবহৃত হয়। এটি হাই-লেভেল ফাইল অপারেশন প্রদান করে।
ইমপোর্ট এবং সিনট্যাক্স
import shutil shutil.move(source, destination)
- source: সরানো ফাইল/ফোল্ডারের পাথ (স্ট্রিং বা Path অবজেক্ট)।
- destination: গন্তব্য পাথ। যদি ডিরেক্টরি হয়, ফাইলটি সেখানে যাবে। যদি ফাইল পাথ হয়, ফাইলটি রিনেম হয়ে যাবে।
রিটার্ন: সরানো ফাইলের নতুন পাথ (স্ট্রিং)।
ব্যবহারিক উদাহরণ
১. একক ফাইল সরানো (রিলেটিভ পাথ)
import shutil source = "raw_data.csv" destination = "data/" # ডিরেক্টরি new_path = shutil.move(source, destination) print(new_path) # data/raw_data.csv
২. ফাইল সরিয়ে রিনেম করা
import shutil source = "raw_data.csv" destination = "data/raw_data_2019.csv" # ফাইল পাথ + নতুন নাম new_path = shutil.move(source, destination) print(new_path) # data/raw_data_2019.csv
৩. একাধিক ফাইল সরানো (os.listdir সহ)
import shutil
import os
source_dir = "/home/user/data"
dest_dir = "/home/user/old_data"
files = os.listdir(source_dir)
for file in files:
src_path = os.path.join(source_dir, file)
new_path = shutil.move(src_path, dest_dir)
print(f"Moved: {new_path}")
৪. প্যাথলিব (pathlib) ব্যবহার (মডার্ন পদ্ধতি)
from pathlib import Path
import shutil
source = Path("raw_data.csv")
destination = Path("data") / "raw_data_2019.csv"
new_path = shutil.move(source, destination)
print(new_path)
গুরুত্বপূর্ণ নোটস
- ওভাররাইট: গন্তব্যে একই নামে ফাইল থাকলে সেটি বিনা সতর্কতাই ওভাররাইট হয়ে যাবে।
- ক্রস-ডিভাইস: ভিন্ন ফাইল সিস্টেম/ড্রাইভে সরালে এটি কপি+ডিলিট করে (স্লো)।
- ফোল্ডার সরানো: একই সিনট্যাক্সে পুরো ডিরেক্টরি সরানো যায়।
- os.rename() বনাম shutil.move():
os.rename()শুধু রিনেম/সেম ডিভাইসে মুভ করতে পারে।shutil.move()আরও পাওয়ারফুল এবং ক্রস-প্ল্যাটফর্ম।
এরর হ্যান্ডলিং
import shutil
import os
source = "missing.txt"
destination = "data/"
try:
if os.path.exists(source):
new_path = shutil.move(source, destination)
print(f"Moved to {new_path}")
else:
print("Source file does not exist.")
except Exception as e:
print(f"Error moving file: {e}")
নিষ্কর্ষ
shutil.move() পাইথনে ফাইল/ফোল্ডার সরানোর স্ট্যান্ডার্ড এবং সবচেয়ে বilidadas পদ্ধতি। এটি রিলেটিভ ও অ্যাবসোলিউট পাথ, রিনেম, এবং ডিরেক্টরি সরানো সব হ্যান্ডেল করে। প্রোডাকশন কোডে সবসময় এরর হ্যান্ডলিং এবং পাথ যাচাই যোগ করুন।