Moving files and folders

Moving files

Use the following script to move various types of files to a different folder in 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 Target Folder Name with the name of the folder you want to move the file to.
from encord import EncordUserClient
from encord.storage import StorageItemType, 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 data unit and target folder
item_search_criteria = "File Name"  # Change this to match the data unit's name
folder_search_criteria = "Target Folder Name"  # Change this to match the target folder's name

# Retrieve the target folder by its name (assuming only one match)
target_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.

# Search for the specific data unit using its name, assuming it will only return one result
item = next(user_client.find_storage_items(
    search=item_search_criteria,
    is_in_dataset=None,  
    item_types=[StorageItemType.IMAGE],
    order=FoldersSortBy.NAME,
    desc=False,
    get_signed_urls=False,
    page_size=1  # Expecting only one data unit. Default page_size is 100.
))

# Move the found data unit to the retrieved target folder
print(f"Moving item {item.uuid} to folder {target_folder.uuid}")
item.move_to_folder(target_folder.uuid)
from encord import EncordUserClient
from encord.storage import StorageItemType, 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 video data unit and target folder
video_search_criteria = "File Name"
folder_search_criteria = "Target Folder Name"

# Retrieve the target folder
target_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.

# Search and retrieve the video data unit
video_item = next(user_client.find_storage_items(
    search=video_search_criteria,
    is_in_dataset=None,
    item_types=[StorageItemType.VIDEO],
    order=FoldersSortBy.NAME,
    desc=False,
    get_signed_urls=False,
    page_size=1
))

# Move the video
print(f"Moving video {video_item.uuid} to folder {target_folder.uuid}")
video_item.move_to_folder(target_folder.uuid)
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>"
            )

# Search criteria
image_group_search_criteria = "File Name"
folder_search_criteria = "Target Folder Name"

# Retrieve the folder
target_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.

# Retrieve the image group
image_group = next(user_client.find_storage_items(
    search=image_group_search_criteria,
    is_in_dataset=None,
    item_types=[StorageItemType.IMAGE_GROUP],
    order=FoldersSortBy.NAME,
    desc=False,
    get_signed_urls=False,
    page_size=1
))

# Move the image group
print(f"Moving image group {image_group.uuid} to folder {target_folder.uuid}")
image_group.move_to_folder(target_folder.uuid)
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>"
            )

# Search criteria
image_sequence_search_criteria = "File Name"
folder_search_criteria = "Target Folder Name"

# Retrieve the folder
target_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.

# Retrieve the image sequence
image_sequence = next(user_client.find_storage_items(
    search=image_sequence_search_criteria,
    is_in_dataset=None,
    item_types=[StorageItemType.IMAGE_SEQUENCE],
    order=FoldersSortBy.NAME,
    desc=False,
    get_signed_urls=False,
    page_size=1
))

# Move the image sequence
print(f"Moving image sequence {image_sequence.uuid} to folder {target_folder.uuid}")
image_sequence.move_to_folder(target_folder.uuid)
from encord import EncordUserClient
from encord.storage import StorageItemType, 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 DICOM series and the target folder
dicom_series_search_criteria = "File Name"
folder_search_criteria = "Target Folder Name"

# Retrieve the target folder
target_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.

# Search and retrieve the DICOM series
dicom_series = next(user_client.find_storage_items(
    search=dicom_series_search_criteria,
    is_in_dataset=None,
    item_types=[StorageItemType.DICOM_SERIES],
    order=FoldersSortBy.NAME,
    desc=False,
    get_signed_urls=False,
    page_size=1
))

# Move the DICOM series
print(f"Moving DICOM series {dicom_series.uuid} to folder {target_folder.uuid}")
dicom_series.move_to_folder(target_folder.uuid)

Moving folders

You can move folders between different parent folders in Files, including moving them to the root (no parent). The following script demonstrates how a folder with the name Folder Name 3 is moved between 2 different target folders. The script must be modified to suit your needs.

Ensure that you:

  • Replace <private_key_path> with the path to your private key.
  • Replace Folder Name 1 with the name of a target folder.
  • Replace Folder Name 2 with the new name of another target folder.
  • Replace Folder Name 3 with the name of the folder that is moved.
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>"
            )

# Search for folders by name using the find_storage_folders function
folder_1 = next(user_client.find_storage_folders(search="Folder Name 1", dataset_synced=False, order=FoldersSortBy.NAME, desc=False, page_size=1000)) # Default page_size is 100.
folder_2 = next(user_client.find_storage_folders(search="Folder Name 2", dataset_synced=False, order=FoldersSortBy.NAME, desc=False, page_size=1000)) # Default page_size is 100.
folder_3 = next(user_client.find_storage_folders(search="Folder Name 3", dataset_synced=False, order=FoldersSortBy.NAME, desc=False, page_size=1000)) # Default page_size is 100.

# Move folder_3 under folder_1
folder_3.move_to_folder(folder_1.uuid)

# Move folder_3 under folder_2
folder_3.move_to_folder(folder_2.uuid)

# Move folder_3 to root folder (passing None moves it to the root level)
folder_3.move_to_folder(None)