python - একটি ফাইল বা ফোল্ডার মুছুন




file-io folder (7)

কিভাবে পাইথন একটি ফাইল বা ফোল্ডার মুছে ফেলতে?


কিভাবে আমি পাইথন একটি ফাইল বা ফোল্ডার মুছে ফেলতে পারি?

পাইথন 3 এর জন্য, পৃথকভাবে ফাইল এবং ডিরেক্টরি অপসারণ করতে, pathlib.Path.unlink() এবং pathlib.Path.rmdir Path অবজেক্ট পদ্ধতিগুলি যথাক্রমে ব্যবহার করুন:

from pathlib import Path
dir_path = Path.home() / 'directory' 
file_path = dir_path / 'file'

file_path.unlink() # remove file

dir_path.rmdir()   # remove directory

লক্ষ্য করুন যে আপনি Path বস্তুর সাথে আপেক্ষিক পাথগুলি ব্যবহার করতে পারেন এবং আপনি Path.cwd সহ আপনার বর্তমান কার্যক্ষেত্রটি পরীক্ষা করতে পারেন।

পাইথন 2 এ পৃথক ফাইল এবং ডিরেক্টরিগুলি সরানোর জন্য, নীচের লেবেলযুক্ত বিভাগটি দেখুন।

সামগ্রী সহ একটি ডিরেক্টরি অপসারণ করতে, shutil.rmtree ব্যবহার shutil.rmtree , এবং নোট করুন যে এটি পাইথন 2 এবং 3 এ উপলব্ধ:

from shutil import rmtree

rmtree(dir_path)

প্রদর্শন

পাইথন 3.4 এ নতুন Path বস্তু।

ব্যবহার প্রদর্শনের জন্য একটি ডিরেক্টরি এবং ফাইল তৈরি করতে এক ব্যবহার করা যাক। উল্লেখ্য, আমরা পথের অংশগুলিতে যোগ দিতে / ব্যবহার করতে, এটি উইন্ডোজগুলিতে ব্যাকস্ল্যাশগুলি ব্যবহার করার ক্ষেত্রে অপারেটিং সিস্টেমগুলির এবং সমস্যাগুলির মধ্যে সমস্যাগুলির সমাধান করে। (যেখানে আপনার ব্যাকস্ল্যাশগুলিকে দ্বিগুণ করতে হবে যেমন \\ অথবা কাঁচা স্ট্রিংগুলির ব্যবহার, যেমন r"foo\bar" ):

from pathlib import Path

# .home() is new in 3.5, otherwise use os.path.expanduser('~')
directory_path = Path.home() / 'directory'
directory_path.mkdir()

file_path = directory_path / 'file'
file_path.touch()

এবং এখন:

>>> file_path.is_file()
True

এখন তাদের মুছে দিন। প্রথম ফাইলটি:

>>> file_path.unlink()     # remove file
>>> file_path.is_file()
False
>>> file_path.exists()
False

আমরা একাধিক ফাইল অপসারণ করতে globbing ব্যবহার করতে পারেন - প্রথমে এর জন্য কয়েকটি ফাইল তৈরি করি:

>>> (directory_path / 'foo.my').touch()
>>> (directory_path / 'bar.my').touch()

তারপর শুধু glob প্যাটার্ন উপর পুনরাবৃত্তি:

>>> for each_file_path in directory_path.glob('*.my'):
...     print(f'removing {each_file_path}')
...     each_file_path.unlink()
... 
removing ~/directory/foo.my
removing ~/directory/bar.my

এখন, ডিরেক্টরি অপসারণ প্রদর্শন:

>>> directory_path.rmdir() # remove directory
>>> directory_path.is_dir()
False
>>> directory_path.exists()
False

যদি আমরা একটি ডিরেক্টরি এবং এটি সবকিছু মুছে ফেলতে চান? এই ব্যবহারের ক্ষেত্রে, shutil.rmtree ব্যবহার shutil.rmtree

চলুন আমাদের ডিরেক্টরি এবং ফাইল পুনরায় তৈরি করুন:

file_path.parent.mkdir()
file_path.touch()

এবং নোট করুন যে এটি খালি না হওয়া পর্যন্ত rmdir ব্যর্থ হয়, এ কারণে rmtree এত সুবিধাজনক:

>>> directory_path.rmdir()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "~/anaconda3/lib/python3.6/pathlib.py", line 1270, in rmdir
    self._accessor.rmdir(self)
  File "~/anaconda3/lib/python3.6/pathlib.py", line 387, in wrapped
    return strfunc(str(pathobj), *args)
OSError: [Errno 39] Directory not empty: '/home/excelsiora/directory'

এখন, rmtree আমদানি করুন এবং মজাদার ডিরেক্টরিটি প্রেরণ করুন:

from shutil import rmtree
rmtree(directory_path)      # remove everything 

এবং আমরা সম্পূর্ণ জিনিস মুছে ফেলা হয়েছে দেখতে পারেন:

>>> directory_path.exists()
False

পাইথন ২

আপনি পাইথন 2 pathlib2 একটি pathlib2 যা পিপ দিয়ে ইনস্টল করা যেতে পারে:

$ pip install pathlib2

এবং তারপর আপনি pathlib লাইব্রেরি উপনাম করতে পারেন

import pathlib2 as pathlib

অথবা সরাসরি Path বস্তুর আমদানি করুন (এখানে প্রদর্শিত হিসাবে):

from pathlib2 import Path

যদি এটি খুব বেশি হয় তবে আপনি os.remove বা os.unlink ফাইলগুলি সরাতে পারেন

from os import unlink, remove
from os.path import join, expanduser

remove(join(expanduser('~'), 'directory/file'))

অথবা

unlink(join(expanduser('~'), 'directory/file'))

এবং আপনি os.rmdir দিয়ে ডিরেক্টরিগুলি সরাতে পারেন:

from os import rmdir

rmdir(join(expanduser('~'), 'directory'))

মনে রাখবেন যে os.removedirs - এটি শুধুমাত্র ফাঁকা ডিরেক্টরিগুলিকে পুনরাবৃত্তি করে, তবে এটি আপনার ব্যবহারের ক্ষেত্রে উপযুক্ত হতে পারে।


একটি ফাইল মুছে ফেলার জন্য পাইথন সিনট্যাক্স

import os
os.remove("/tmp/<file_name>.txt")

অথবা

import os
os.unlink("/tmp/<file_name>.txt")

ভাল অভ্যাস

  1. প্রথমে, ফাইল বা ফোল্ডার বিদ্যমান কিনা তা পরীক্ষা করুন নাকি শুধুমাত্র সেই ফাইলটি মুছুন। এই দুটি উপায়ে অর্জন করা যেতে পারে:
    ক। os.path.isfile("/path/to/file")
    খ। exception handling. ব্যবহার করুন exception handling.

os.path.isfile জন্য উদাহরণ

#!/usr/bin/python
import os
myfile="/tmp/foo.txt"

## If file exists, delete it ##
if os.path.isfile(myfile):
    os.remove(myfile)
else:    ## Show an error ##
    print("Error: %s file not found" % myfile)

ব্যতিক্রম হ্যান্ডলিং

#!/usr/bin/python
import os

## Get input ##
myfile= raw_input("Enter file name to delete: ")

## Try to delete the file ##
try:
    os.remove(myfile)
except OSError as e:  ## if failed, report it back to the user ##
    print ("Error: %s - %s." % (e.filename, e.strerror))

প্রতিক্রিয়াশীল আউটপুট

Enter file name to delete : demo.txt
Error: demo.txt - No such file or directory.

Enter file name to delete : rrr.txt
Error: rrr.txt - Operation not permitted.

Enter file name to delete : foo.txt

একটি ফোল্ডার মুছে ফেলার জন্য পাইথন সিনট্যাক্স

shutil.rmtree()

shutil.rmtree() জন্য উদাহরণ shutil.rmtree()

#!/usr/bin/python
import os
import sys
import shutil

# Get directory name
mydir= raw_input("Enter directory name: ")

## Try to remove tree; if failed show an error using try...except on screen
try:
    shutil.rmtree(mydir)
except OSError as e:
    print ("Error: %s - %s." % (e.filename, e.strerror))

shutil.rmtree অ্যাসিঙ্ক্রোনাস ফাংশন, তাই আপনি এটি সম্পূর্ণ হলে চেক করতে চান, আপনি যখন ব্যবহার করতে পারেন ... লুপ

import os
import shutil

shutil.rmtree(path)

while os.path.exists(path):
  pass

print('done')

আপনি guys জন্য একটি ফাংশন তৈরি করুন।

def remove(path):
    """ param <path> could either be relative or absolute. """
    if os.path.isfile(path):
        os.remove(path)  # remove the file
    elif os.path.isdir(path):
        shutil.rmtree(path)  # remove dir and all contains
    else:
        raise ValueError("file {} is not a file or dir.".format(path))

একটি সুন্দর এবং পঠনযোগ্য কোড লিখতে যদি আপনার subprocess কাপ ব্যবহার করা subprocess তবে আমি subprocess ব্যবহার করার পরামর্শ subprocess :

import subprocess
subprocess.Popen("rm -r my_dir", shell=True)

এবং যদি আপনি কোনও সফটওয়্যার ইঞ্জিনিয়ার না হন তবে সম্ভবত জুপিটার ব্যবহার বিবেচনা করুন; আপনি কেবল bash কমান্ড টাইপ করতে পারেন:

!rm -r my_dir

ঐতিহ্যগতভাবে, আপনি shutil ব্যবহার shutil :

import shutil
shutil.rmtree(my_dir) 

ব্যবহার

shutil.rmtree(path[, ignore_errors[, onerror]])

( shutil উপর সম্পূর্ণ ডকুমেন্টেশন দেখুন) এবং / অথবা

os.remove

এবং

os.rmdir

( os.remove() উপর সম্পূর্ণ ডকুমেন্টেশন।)


import os

folder = '/Path/to/yourDir/'
fileList = os.listdir(folder)

for f in fileList:
    filePath = folder + '/'+f

    if os.path.isfile(filePath):
        os.remove(filePath)

    elif os.path.isdir(filePath):
        newFileList = os.listdir(filePath)
        for f1 in newFileList:
            insideFilePath = filePath + '/' + f1

            if os.path.isfile(insideFilePath):
                os.remove(insideFilePath)




delete-file