Tutorial: Memadam Fail XML Secara Rekursif Menggunakan Python dalam Folder dan Subfolder (Recursive XML File Deletion Using Python in Current and Subdirectories)




Di sini saya akan menjelaskan cara mengubah skrip Python supaya boleh berada dalam folder yang sama dengan fail-fail XML yang hendak dipadam dan dapat memadam semua fail XML dalam folder tersebut dan subfolder-subfoldernya. 


import os

import glob


# Fungsi untuk memadam semua fail XML dalam direktori semasa dan subfoldernya

def delete_xml_files():

    # Dapatkan direktori semasa

    current_directory = os.getcwd()

    

    # Bentuk corak untuk mencari fail XML secara rekursif

    xml_files_pattern = os.path.join(current_directory, '**', '*.XML')

    

    # Gunakan glob untuk mencari semua fail XML yang sepadan dengan corak

    xml_files = glob.glob(xml_files_pattern, recursive=True)

    

    # Iterasi setiap fail XML yang dijumpai dan cuba padam menggunakan os.remove()

    for xml_file in xml_files:

        try:

            os.remove(xml_file)

            print(f"Berjaya dipadam: {xml_file}")

        except OSError as e:

            print(f"Ralat semasa memadam {xml_file}: {e}")


# Contoh penggunaan:

if __name__ == "__main__":

    delete_xml_files()



Penjelasan:

  1. os.getcwd():

    • Mendapatkan direktori kerja semasa di mana skrip berada. Ini adalah titik permulaan untuk mencari fail XML.
  2. Fungsi delete_xml_files:

    • Membentuk corak (os.path.join(current_directory, '**', '*.xml')) untuk mencari semua fail .xml secara rekursif bermula dari direktori semasa.
    • Menggunakan glob.glob(xml_files_pattern, recursive=True) untuk mendapatkan senarai semua fail XML yang sepadan dengan corak.
    • Melalui setiap fail XML yang dijumpai dan cuba untuk memadamnya menggunakan os.remove().
    • Mengendalikan pengecualian (OSError) yang mungkin berlaku semasa pemadaman dan mencetak mesej yang sesuai.
  3. Contoh Penggunaan:

    • Apabila skrip dijalankan, ia akan bermula dari direktori semasa dan memadam semua fail XML dalam direktori tersebut dan subfoldernya.
    • Pastikan skrip (delete_xml_files) diletakkan di dalam folder di mana anda ingin melakukan pemadaman.

Nota:

  • Direktori Kerja Semasa: Pastikan skrip berada di dalam direktori di mana anda ingin memadam fail XML, kerana os.getcwd() mendapatkan direktori semasa pelaksanaan.
  • Pengendalian Ralat: Skrip ini mengendalikan ralat yang mungkin berlaku semasa pemadaman fail (contohnya, kebenaran ditolak, fail tidak dijumpai) dan mencetak mesej untuk setiap percubaan pemadaman.

Dengan pengubahsuaian ini, skrip akan berfungsi dalam folder di mana ia berada dan dapat memadam semua fail XML secara rekursif dalam folder tersebut dan subfoldernya.



If you want the Python script to reside inside the folder where it will delete all XML files within that folder and its subfolders, you can modify the script to use the current directory (`.`) as the starting point for the deletion operation. Here's how you can modify the script:


```python

import os

import glob


# Function to delete all XML files in the current directory and its subdirectories

def delete_xml_files():

    # Get the current directory

    current_directory = os.getcwd()

    

    # Construct the pattern to match XML files recursively

    xml_files_pattern = os.path.join(current_directory, '**', '*.xml')

    

    # Use glob to find all XML files matching the pattern

    xml_files = glob.glob(xml_files_pattern, recursive=True)

    

    # Iterate through each XML file found and delete it

    for xml_file in xml_files:

        try:

            os.remove(xml_file)

            print(f"Deleted: {xml_file}")

        except OSError as e:

            print(f"Error deleting {xml_file}: {e}")


# Example usage:

if __name__ == "__main__":

    delete_xml_files()

```


### Explanation:


1. **`os.getcwd()`**:

   - Retrieves the current working directory where the script resides. This is the starting point for finding XML files.


2. **delete_xml_files Function**:

   - Constructs a pattern (`os.path.join(current_directory, '**', '*.xml')`) to match all `.xml` files recursively starting from the current directory.

   - Uses `glob.glob(xml_files_pattern, recursive=True)` to retrieve a list of all XML files matching the pattern.

   - Iterates through each XML file found and attempts to delete it using `os.remove()`.

   - Handles exceptions (`OSError`) that might occur during deletion and prints appropriate messages.


3. **Example Usage**:

   - When you run the script, it will start from the current directory and delete all XML files in that directory and its subdirectories.

   - Make sure the script (`delete_xml_files`) is placed inside the folder where you want to perform the deletion.


### Notes:

- **Current Working Directory**: Ensure the script is located in the directory where you want to delete XML files, as `os.getcwd()` fetches the current directory of execution.

- **Error Handling**: The script handles errors that may occur during file deletion (e.g., permission denied, file not found) and prints messages for each deletion attempt.


This modification ensures that the script operates within the folder where it resides and deletes all XML files recursively within that folder and its subfolders.

Post a Comment

0 Comments