Edit and delete files and folders

Update folder properties

Use the following script to update the name and description of an existing folder in Files. Ensure that you:

  • Replace <private_key_path> with the path to your private key.
  • Replace Cat Videos with the name of the folder you want to update properties for.
  • Replace Cat videos and images with the new name you want to give the folder.
  • Replace Images and videos of cats with the description you want to give the folder.

👍

Tip

Use the list_storage_folders and find_storage_folders methods to search for specific folders.

from encord import EncordUserClient
from encord.orm.storage import FoldersSortBy

# Instantiate Encord client using your SSH private key
user_client = EncordUserClient.create_with_ssh_private_key(
    ssh_private_key_path="<private_key_path>"
)

# Define search parameters
folder_name_to_find = "Cat Videos"
search_result = user_client.find_storage_folders(
    search=folder_name_to_find,
    dataset_synced=None,
    order=FoldersSortBy.NAME,
    desc=False,
    page_size=1000  # Default page_size is 100.
)

# Fetch the folder assuming it's the first one in the search result
folder = next(search_result, None)
if folder is None:
    print(f"No folder found with name {folder_name_to_find}")
else:
    # Define new properties for the folder
    new_name = "Cat videos and images"
    new_description = "Images and videos of cats"

    # Update the folder properties
    folder.update(name=new_name, description=new_description)
    print(f"Folder '{folder_name_to_find}' updated to new name '{new_name}' and description '{new_description}'")

Delete folders

Use the following script to delete a specific folder from Files. Ensure that you:

  • Replace <private_key_path> with the path to your private key.
  • Replace Specific Folder Name with the name of the folder you want to delete.
from encord import EncordUserClient
from encord.storage import FoldersSortBy

# Instantiate Encord client by substituting the path to your private key
user_client = EncordUserClient.create_with_ssh_private_key(
                ssh_private_key_path="<private_key_path>"
            )

# Define the search criteria for the folder
folder_search_criteria = "Specific Folder Name"

# Retrieve the target folder
try:
    folder_to_delete = next(user_client.find_storage_folders(search=folder_search_criteria, dataset_synced=None, order=FoldersSortBy.NAME, desc=False, page_size=1000)) # Default page_size is 100.
    print(f"Deleting folder {folder_to_delete.uuid}")

    # Delete the folder and verify it cannot be accessed anymore
    folder_to_delete.delete()
    print("Folder deleted successfully.")

    try:
        # Try to refetch the folder to verify it's been deleted
        user_client.get_storage_folder(folder_to_delete.uuid)
        print("Error: Folder still accessible after deletion.")
    except Exception as e:
        print(f"Verification successful: {str(e)}")

except StopIteration:
    print("No folder found with the specified criteria.")

Delete files

Use the following scripts to delete different types of files from Files. Ensure that you:

  • Replace <private_key_path> with the path to your private key.
  • Replace File Name with the name of the file you want to move to a new folder.
  • Replace Parent Folder with the name of the folder containing the file you want to delete.
from encord import EncordUserClient
from encord.storage import StorageItemType, FoldersSortBy

# Instantiate Encord client
user_client = EncordUserClient.create_with_ssh_private_key(ssh_private_key_path="<private_key_path>")

# Find the image by name
image_name = "File Name"
# Define the search criteria for the folder
folder_search_criteria = "Parent Folder"

# Retrieve the target folder
try:
    folder = next(user_client.find_storage_folders(search=folder_search_criteria, dataset_synced=None, order=FoldersSortBy.NAME, desc=False, page_size=1000)) # Default page_size is 100.

    images = list(user_client.find_storage_items(search=image_name, item_types=[StorageItemType.IMAGE], order=FoldersSortBy.NAME, desc=False, page_size=1000)) # Default page_size is 100.

    if images:
        # Delete the image
        folder.delete_storage_items(item_uuids=[images[0].uuid], remove_unused_frames=True)
        print("Image deleted successfully.")
    else:
        print("No image found with the specified name.")

except StopIteration:
    print("No folder found with the specified criteria.")
from encord import EncordUserClient
from encord.storage import StorageItemType, FoldersSortBy

# Instantiate Encord client
user_client = EncordUserClient.create_with_ssh_private_key(ssh_private_key_path="<private_key_path>")

# Find the video by name
video_name = "File Name"
# Define the search criteria for the folder
folder_search_criteria = "Parent Folder"

# Retrieve the target folder
try:
    folder = next(user_client.find_storage_folders(search=folder_search_criteria, dataset_synced=None, order=FoldersSortBy.NAME, desc=False, page_size=1000)) # Default page_size is 100.

    videos = list(user_client.find_storage_items(search=video_name, item_types=[StorageItemType.VIDEO], order=FoldersSortBy.NAME, desc=False, page_size=1000)) # Default page_size is 100.

    if videos:
        # Delete the video
        folder.delete_storage_items(item_uuids=[videos[0].uuid], remove_unused_frames=True)
        print("Video deleted successfully.")
    else:
        print("No video found with the specified name.")

except StopIteration:
    print("No folder found with the specified criteria.")
from encord import EncordUserClient
from encord.storage import StorageItemType, FoldersSortBy

# Instantiate Encord client
user_client = EncordUserClient.create_with_ssh_private_key(ssh_private_key_path="<private_key_path>")

# Find the image group by name
image_group_name = "File Name"
# Define the search criteria for the folder
folder_search_criteria = "Parent Folder"

# Retrieve the target folder
try:
    folder = next(user_client.find_storage_folders(search=folder_search_criteria, dataset_synced=None, order=FoldersSortBy.NAME, desc=False, page_size=1000)) # Default page_size is 100.

    image_groups = list(user_client.find_storage_items(search=image_group_name, item_types=[StorageItemType.IMAGE_GROUP], order=FoldersSortBy.NAME, desc=False, page_size=1000)) # Default page_size is 100.

    if image_groups:
        # Delete the image group
        folder.delete_storage_items(item_uuids=[image_groups[0].uuid], remove_unused_frames=True)
        print("Image group deleted successfully.")
    else:
        print("No image group found with the specified name.")

except StopIteration:
    print("No folder found with the specified criteria.")
from encord import EncordUserClient
from encord.storage import StorageItemType, FoldersSortBy

# Instantiate Encord client
user_client = EncordUserClient.create_with_ssh_private_key(ssh_private_key_path="<private_key_path>")

# Find the image sequence by name
image_sequence_name = "File Name"
# Define the search criteria for the folder
folder_search_criteria = "Parent Folder"

# Retrieve the target folder
try:
    folder = next(user_client.find_storage_folders(search=folder_search_criteria, dataset_synced=None, order=FoldersSortBy.NAME, desc=False, page_size=1000)) # Default page_size is 100.

    image_sequences = list(user_client.find_storage_items(search=image_sequence_name, item_types=[StorageItemType.IMAGE_SEQUENCE], order=FoldersSortBy.NAME, desc=False, page_size=1000)) # Default page_size is 100.

    if image_sequences:
        # Delete the image sequence
        folder.delete_storage_items(item_uuids=[image_sequences[0].uuid], remove_unused_frames=True)
        print("Image sequence deleted successfully.")
    else:
        print("No image sequence found with the specified name.")

except StopIteration:
    print("No folder found with the specified criteria.")
from encord import EncordUserClient
from encord.storage import StorageItemType, FoldersSortBy

# Instantiate Encord client
user_client = EncordUserClient.create_with_ssh_private_key(ssh_private_key_path="<private_key_path>")

# Find the DICOM series by name
dicom_series_name = "File Name"
# Define the search criteria for the folder
folder_search_criteria = "Parent Folder"

# Retrieve the target folder
try:
    folder = next(user_client.find_storage_folders(search=folder_search_criteria, dataset_synced=None, order=FoldersSortBy.NAME, desc=False, page_size=1000)) # Default page_size is 100.

    dicom_series = list(user_client.find_storage_items(search=dicom_series_name, item_types=[StorageItemType.DICOM_SERIES], order=FoldersSortBy.NAME, desc=False, page_size=1000)) # Default page_size is 100.

    if dicom_series:
        # Delete the DICOM series
        folder.delete_storage_items(item_uuids=[dicom_series[0].uuid], remove_unused_frames=True)
        print("DICOM series deleted successfully.")
    else:
        print("No DICOM series found with the specified name.")

except StopIteration:
    print("No folder found with the specified criteria.")