DataLakeFileClient 類別
與 DataLake 檔案互動的用戶端,即使檔案可能還不存在也一樣。
- 繼承
-
azure.storage.filedatalake._path_client.PathClientDataLakeFileClient
建構函式
DataLakeFileClient(account_url: str, file_system_name: str, file_path: str, credential: str | Dict[str, str] | AzureNamedKeyCredential | AzureSasCredential | TokenCredential | None = None, **kwargs: Any)
參數
- credential
要用來驗證的認證。 如果帳戶 URL 已經有 SAS 權杖,則這是選擇性的。 此值可以是 SAS 權杖字串、來自 azure.core.credentials 的 AzureSasCredential 或 AzureNamedKeyCredential 實例、帳戶共用存取金鑰,或來自 azure.identity 的 TokenCredentials 類別實例。 如果資源 URI 已經包含 SAS 權杖,則會忽略此權杖,以使用明確的認證
- 除了 AzureSasCredential 的情況之外,衝突的 SAS 權杖將會引發 ValueError。 如果使用 AzureNamedKeyCredential 的實例,「name」 應該是儲存體帳戶名稱,而 「key」 應該是儲存體帳戶金鑰。
- api_version
- str
要用於要求的儲存體 API 版本。 預設值是與目前 SDK 相容的最新服務版本。 將 設定為較舊版本可能會導致功能相容性降低。
範例
從連接字串建立 DataLakeServiceClient。
from azure.storage.filedatalake import DataLakeFileClient
DataLakeFileClient.from_connection_string(connection_string, "myfilesystem", "mydirectory", "myfile")
變數
- url
- str
檔案系統的完整端點 URL,包括使用 SAS 權杖。
- primary_endpoint
- str
完整的主要端點 URL。
- primary_hostname
- str
主要端點的主機名稱。
方法
acquire_lease |
要求新的租用。 如果檔案或目錄沒有作用中的租用,DataLake 服務會在檔案/目錄上建立租用,並傳回新的租用識別碼。 |
append_data |
將資料附加至檔案。 |
close |
這個方法是關閉用戶端所開啟的通訊端。 與內容管理員搭配使用時,不需要使用它。 |
create_file |
建立新檔案。 |
delete_file |
標記要刪除的指定檔案。 |
download_file |
將檔案下載至 StorageStreamDownloader。 readall () 方法必須用來讀取所有內容,或 readinto () 必須用來將檔案下載到資料流程。 使用 chunks () 會傳回反覆運算器,讓使用者以區塊逐一查看內容。 |
exists |
如果檔案存在,則傳回 True,否則傳回 False。 |
flush_data |
認可先前附加的資料。 |
from_connection_string |
從連接字串建立 DataLakeFileClient。 :return a DataLakeFileClient :rtype ~azure.storage.filedatalake.DataLakeFileClient |
get_access_control | |
get_file_properties |
傳回檔案的所有使用者定義中繼資料、標準 HTTP 屬性和系統屬性。 但不會傳回檔案內容。 |
query_file |
可讓使用者藉由提供簡單的查詢運算式,在 datalake 檔案資料上選取/專案。 此作業會傳回 DataLakeFileQueryReader,使用者必須使用 readall () 或 readinto () 來取得查詢資料。 |
remove_access_control_recursive |
移除路徑和子路徑上的存取控制。 |
rename_file |
重新命名原始程式檔。 |
set_access_control |
設定路徑的擁有者、群組、許可權或存取控制清單。 |
set_access_control_recursive |
在路徑和子路徑上設定存取控制。 |
set_file_expiry |
設定檔案到期並刪除的時間。 |
set_http_headers |
設定檔案或目錄上的系統屬性。 如果已為content_settings設定一個屬性,則會覆寫所有屬性。 |
set_metadata |
設定指定檔案系統的一或多個使用者定義名稱/值組。 每次呼叫此作業都會取代附加至檔案系統的所有現有中繼資料。 若要從檔案系統中移除所有中繼資料,請呼叫此作業,而不使用中繼資料聽寫。 |
update_access_control_recursive |
修改路徑和子路徑上的存取控制。 |
upload_data |
將資料上傳至檔案。 |
acquire_lease
要求新的租用。 如果檔案或目錄沒有作用中的租用,DataLake 服務會在檔案/目錄上建立租用,並傳回新的租用識別碼。
acquire_lease(lease_duration: int | None = -1, lease_id: str | None = None, **kwargs) -> DataLakeLeaseClient
參數
- lease_duration
- int
指定租用的持續時間 (秒數),或指定負一 (-1),代表租用永不到期。 非無限期的租用可以介於 15 到 60 秒之間。 無法使用續約或變更來變更租用持續時間。 預設值為 -1 (無限租用) 。
- if_modified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源在指定的時間後修改,才能指定此標準執行作業。
- if_unmodified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源沒有在指定的日期/時間後修改,才能指定此標頭執行作業。
- etag
- str
ETag 值,或萬用字元 (*)。 用來檢查資源是否已變更,並根據 match_condition 參數所指定的條件採取行動。
- match_condition
- MatchConditions
要用於 etag 的比對條件。
- timeout
- int
以秒為單位設定作業的伺服器端逾時。 如需詳細資訊,請參閱 https://learn.microsoft.com/rest/api/storageservices/setting-timeouts-for-blob-service-operations 。 此值不會在用戶端上追蹤或驗證。 若要設定用戶端網路逾時,請參閱 這裡。
傳回
DataLakeLeaseClient 物件,可在內容管理員中執行。
傳回類型
append_data
將資料附加至檔案。
append_data(data: bytes | str | Iterable[AnyStr] | IO[AnyStr], offset: int, length: int | None = None, **kwargs) -> Dict[str, str | datetime | int]
參數
- data
要附加至檔案的內容
- offset
要附加之資料的開始位置。
- length
以位元組為單位的資料大小。
- flush
- bool
如果為 true,則會在附加資料之後認可資料。
- validate_content
- bool
如果為 true,則計算區塊內容的 MD5 雜湊。 儲存體服務會檢查與已傳送雜湊一起抵達之內容的雜湊。 如果使用 HTTP 而非 HTTPs 作為 HTTPs,則這主要對於偵測連線上的 bitflip 很有用, (預設) 將已經過驗證。 請注意,這個 MD5 雜湊不會與 檔案一起儲存。
- lease_action
- Literal["acquire", "auto-renew", "release", "acquire-release"]
用來執行租用作業以及附加資料。
「acquire」 - 取得租用。 「自動更新」- 重新新增現有的租用。 「release」 - 作業完成後釋放租用。 需要 flush=True。 「acquire-release」 - 取得租用,並在作業完成後釋出。 需要 flush=True。
- lease_duration
- int
如果 lease_action 設定為 「acquire」 或 「acquire-release」,則有效。
指定租用的持續時間 (秒數),或指定負一 (-1),代表租用永不到期。 非無限期的租用可以介於 15 到 60 秒之間。 無法使用續約或變更來變更租用持續時間。 預設值為 -1 (無限租用) 。
- lease
- DataLakeLeaseClient 或 str
如果檔案具有作用中的租用,或 lease_action 設定為 「acquire」 或 「acquire-release」,則為必要專案。 如果檔案具有現有的租用,則會用來存取檔案。 如果取得新的租用,這將會作為新的租用識別碼。值可以是 DataLakeLeaseClient 物件或租用識別碼做為字串。
使用指定的金鑰加密服務端的資料。 您必須透過 HTTPS 使用客戶提供的金鑰。
傳回
回應標頭的聽寫
範例
將資料附加至檔案。
file_client.append_data(data=file_content[2048:3072], offset=2048, length=1024)
close
這個方法是關閉用戶端所開啟的通訊端。 與內容管理員搭配使用時,不需要使用它。
close() -> None
create_file
建立新檔案。
create_file(content_settings: ContentSettings | None = None, metadata: Dict[str, str] | None = None, **kwargs) -> Dict[str, str | datetime]
參數
- lease
- DataLakeLeaseClient 或 str
如果檔案有作用中的租用,則為必要專案。 值可以是 DataLakeLeaseClient 物件或租用識別碼做為字串。
- umask
- str
選擇性且只有在帳戶啟用階層命名空間時才有效。 建立檔案或目錄且父資料夾沒有預設 ACL 時,umask 會限制要建立的檔案或目錄許可權。 產生的許可權是由 p ^u 提供,其中 p & 是許可權,而您是 umask。 例如,如果 p 是 0777,而您是 0057,則產生的許可權為 0720。 目錄的預設許可權為 0777,而檔案的預設許可權為 0666。 預設 umask 為 0027。 umask 必須在 4 位數的八進位標記法中指定 (,例如 0766) 。
- owner
- str
檔案或目錄的擁有者。
- group
- str
檔案或目錄的擁有群組。
- acl
- str
設定檔案和目錄的 POSIX 存取控制許可權。 此值是以逗號分隔的存取控制專案清單。 每個存取控制專案 (ACE) 都包含範圍、類型、使用者或群組識別碼,以及格式為 「[scope:][type]:[id]:[permissions]」 的許可權。
- lease_id
- str
建議的租用識別碼,使用 GUID 字串格式。 如果建議的租用識別碼格式不正確,DataLake 服務會傳回 400 (不正確要求) 。
- lease_duration
- int
指定租用的持續時間 (秒數),或指定負一 (-1),代表租用永不到期。 非無限期的租用可以介於 15 到 60 秒之間。 無法使用續約或變更來變更租用持續時間。
將檔案設定為到期的時間。 如果expires_on的類型是 int,則到期時間會設定為從建立時間經過的毫秒數。 如果expires_on的類型是 datetime,則到期時間會設定為提供的絕對時間。 如果未提供時區資訊,則會將此解譯為 UTC。
- permissions
- str
選擇性且只有在帳戶啟用階層命名空間時才有效。 設定檔案擁有者、檔案擁有者群組及其他的 POSIX 存取權限。 每個類別都可以被授與讀取、寫入或執行許可權。 也支援黏性位。 支援符號 (rwxrw-rw-) 和 4 位數八進位標記法 (例如 0766) 。
- if_modified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源在指定的時間後修改,才能指定此標準執行作業。
- if_unmodified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源沒有在指定的日期/時間後修改,才能指定此標頭執行作業。
- etag
- str
ETag 值,或萬用字元 (*)。 用來檢查資源是否已變更,並根據 match_condition 參數所指定的條件採取行動。
- match_condition
- MatchConditions
要用於 etag 的比對條件。
使用指定的金鑰加密服務端的資料。 您必須透過 HTTPS 使用客戶提供的金鑰。
- timeout
- int
以秒為單位設定作業的伺服器端逾時。 如需詳細資訊,請參閱 https://learn.microsoft.com/rest/api/storageservices/setting-timeouts-for-blob-service-operations 。 此值不會在用戶端上追蹤或驗證。 若要設定用戶端網路逾時,請參閱 這裡。
- encryption_context
- str
指定要在檔案上設定的加密內容。
傳回
回應聽寫 (Etag 和上次修改) 。
範例
建立檔案。
file_client = filesystem_client.get_file_client(file_name)
file_client.create_file()
delete_file
標記要刪除的指定檔案。
delete_file(**kwargs) -> None
參數
- lease
- DataLakeLeaseClient 或 str
如果檔案有作用中的租用,則為必要專案。 值可以是 LeaseClient 物件或租用識別碼做為字串。
- if_modified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源在指定的時間後修改,才能指定此標準執行作業。
- if_unmodified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源沒有在指定的日期/時間後修改,才能指定此標頭執行作業。
- etag
- str
ETag 值,或萬用字元 (*)。 用來檢查資源是否已變更,並根據 match_condition 參數所指定的條件採取行動。
- match_condition
- MatchConditions
要用於 etag 的比對條件。
- timeout
- int
以秒為單位設定作業的伺服器端逾時。 如需詳細資訊,請參閱 https://learn.microsoft.com/rest/api/storageservices/setting-timeouts-for-blob-service-operations 。 此值不會在用戶端上追蹤或驗證。 若要設定用戶端網路逾時,請參閱 這裡。
傳回
無
範例
刪除檔案。
new_client.delete_file()
download_file
將檔案下載至 StorageStreamDownloader。 readall () 方法必須用來讀取所有內容,或 readinto () 必須用來將檔案下載到資料流程。 使用 chunks () 會傳回反覆運算器,讓使用者以區塊逐一查看內容。
download_file(offset: int | None = None, length: int | None = None, **kwargs: Any) -> StorageStreamDownloader
參數
- lease
- DataLakeLeaseClient 或 str
如果指定,只有在檔案的租用作用中且符合此識別碼時,下載才會成功。 如果檔案有作用中的租用,則為必要專案。
- if_modified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源在指定的時間後修改,才能指定此標準執行作業。
- if_unmodified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源沒有在指定的日期/時間後修改,才能指定此標頭執行作業。
- etag
- str
ETag 值,或萬用字元 (*)。 用來檢查資源是否已變更,並根據 match_condition 參數所指定的條件採取行動。
- match_condition
- MatchConditions
要用於 etag 的比對條件。
使用指定的金鑰解密服務端的資料。 您必須透過 HTTPS 使用客戶提供的金鑰。 如果檔案是以 Customer-Provided 金鑰建立,則為必要專案。
- max_concurrency
- int
要下載的平行連線數目。
- timeout
- int
以秒為單位設定作業的伺服器端逾時。 如需詳細資訊,請參閱 https://learn.microsoft.com/rest/api/storageservices/setting-timeouts-for-blob-service-operations 。 此值不會在用戶端上追蹤或驗證。 若要設定用戶端網路逾時,請參閱 這裡。 這個方法可能會對服務進行多個呼叫,而逾時會個別套用至每個呼叫。
傳回
StorageStreamDownloader (串流物件)
傳回類型
範例
傳回下載的資料。
download = file_client.download_file()
downloaded_bytes = download.readall()
exists
如果檔案存在,則傳回 True,否則傳回 False。
exists(**kwargs: Any) -> bool
參數
- timeout
- int
以秒為單位設定作業的伺服器端逾時。 如需詳細資訊,請參閱 https://learn.microsoft.com/rest/api/storageservices/setting-timeouts-for-blob-service-operations 。 用戶端上不會追蹤或驗證此值。 若要設定用戶端網路逾時,請參閱 這裡。
傳回
如果檔案存在,則為 True,否則會傳回 False。
傳回類型
flush_data
認可先前附加的資料。
flush_data(offset: int, retain_uncommitted_data: bool | None = False, **kwargs) -> Dict[str, str | datetime]
參數
- offset
offset 等於認可先前附加資料之後的檔案長度。
- retain_uncommitted_data
- bool
僅適用于排清作業。 如果為 「true」,則會在排清作業完成之後保留未認可的資料;否則,排清作業之後會刪除未認可的資料。 預設值為 false。 排清成功時,小於指定位置的資料會寫入檔案,但這個選擇性參數允許在排清位置之後保留資料,以供日後排清作業使用。
- content_settings
- ContentSettings
用來設定路徑屬性的 ContentSettings 物件。
- close
- bool
Azure 儲存體事件可讓應用程式在檔案變更時接收通知。 啟用 Azure 儲存體事件時,會引發檔案變更事件。 這個事件具有屬性,指出這是最終變更,以區別中繼排清與檔案資料流程之間的差異,以及檔資料流程的最終關閉。 只有在動作為「排清」且啟用變更通知時,關閉查詢參數才有效。 如果 close 的值為 「true」,且排清作業順利完成,服務就會引發檔案變更通知,其屬性工作表示這是檔案資料流程 (已關閉) 的最終更新。 如果引發「false」變更通知,表示檔案已變更。 預設值為 false。 Hadoop ABFS 驅動程式會將此查詢參數設定為 true,表示檔案資料流程已關閉。」
- if_modified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,則任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源在指定的時間後修改,才能指定此標準執行作業。
- if_unmodified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,則任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源沒有在指定的日期/時間後修改,才能指定此標頭執行作業。
- etag
- str
ETag 值,或萬用字元 (*)。 用來檢查資源是否已變更,並根據 match_condition 參數所指定的條件採取行動。
- match_condition
- MatchConditions
要用於 etag 的比對條件。
- lease_action
- Literal["acquire", "auto-renew", "release", "acquire-release"]
用來執行租用作業以及附加資料。
「acquire」 - 取得租用。 「auto-renew」 - 重新新增現有的租用。 「release」 - 作業完成後釋放租用。 「acquire-release」 - 取得租用,並在作業完成之後釋出。
- lease_duration
- int
如果 lease_action 設定為 「acquire」 或 「acquire-release」,則有效。
指定租用的持續時間 (秒數),或指定負一 (-1),代表租用永不到期。 非無限期的租用可以介於 15 到 60 秒之間。 租用持續時間無法使用更新或變更來變更。 預設值為 -1 (無限租用) 。
- lease
- DataLakeLeaseClient 或 str
如果檔案具有作用中租用 ,或lease_action 設定為 「acquire」 或 「acquire-release」,則為必要專案。 如果檔案有現有的租用,這會用來存取檔案。 如果取得新的租用,這會作為新的租用識別碼。值可以是 DataLakeLeaseClient 物件或租用識別碼作為字串。
使用指定的金鑰加密服務端的資料。 您必須透過 HTTPS 使用客戶提供的金鑰。
傳回
聽寫中的回應標頭
範例
認可先前附加的資料。
with open(SOURCE_FILE, "rb") as data:
file_client = file_system_client.get_file_client("myfile")
file_client.create_file()
file_client.append_data(data, 0)
file_client.flush_data(data.tell())
from_connection_string
從連接字串建立 DataLakeFileClient。
:return a DataLakeFileClient :rtype ~azure.storage.filedatalake.DataLakeFileClient
from_connection_string(conn_str: str, file_system_name: str, file_path: str, credential: str | Dict[str, str] | AzureNamedKeyCredential | AzureSasCredential | TokenCredential | None = None, **kwargs: Any) -> Self
參數
- credential
要用來驗證的認證。 如果帳戶 URL 已經有 SAS 權杖,或連接字串已經有共用存取金鑰值,則這是選擇性的。 此值可以是 SAS 權杖字串、來自 azure.core.credentials 的 AzureSasCredential 或 AzureNamedKeyCredential 的實例、帳戶共用存取金鑰,或來自 azure.identity 的 TokenCredentials 類別實例。 此處提供的認證優先于連接字串中的認證。 如果使用 AzureNamedKeyCredential 的實例,「name」 應該是儲存體帳戶名稱,而 「key」 應該是儲存體帳戶金鑰。
get_access_control
get_access_control(upn: bool | None = None, **kwargs) -> Dict[str, Any]
參數
- upn
- bool
選擇性。 只有在帳戶啟用階層命名空間時才有效。 如果為 「true」,則會將 x-ms-owner、x-ms-group 和 x-ms-acl 回應標頭中傳回的使用者識別值從 Azure Active Directory 物件識別碼轉換成使用者主體名稱。 如果為 「false」,則會以 Azure Active Directory 物件識別碼的形式傳回值。 預設值為 false。 請注意,群組和應用程式物件識別碼不會翻譯,因為它們沒有唯一的易記名稱。
- lease
- DataLakeLeaseClient 或 str
如果檔案/目錄具有作用中的租用,則為必要專案。 值可以是 LeaseClient 物件或租用識別碼做為字串。
- if_modified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,則任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源在指定的時間後修改,才能指定此標準執行作業。
- if_unmodified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,則任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源沒有在指定的日期/時間後修改,才能指定此標頭執行作業。
- etag
- str
ETag 值,或萬用字元 (*)。 用來檢查資源是否已變更,並根據 match_condition 參數所指定的條件採取行動。
- match_condition
- MatchConditions
要用於 etag 的比對條件。
- timeout
- int
以秒為單位設定作業的伺服器端逾時。 如需詳細資訊,請參閱 https://learn.microsoft.com/rest/api/storageservices/setting-timeouts-for-blob-service-operations 。 用戶端上不會追蹤或驗證此值。 若要設定用戶端網路逾時,請參閱 這裡。
- response dict
回應聽寫。
get_file_properties
傳回檔案的所有使用者定義中繼資料、標準 HTTP 屬性和系統屬性。 但不會傳回檔案內容。
get_file_properties(**kwargs: Any) -> FileProperties
參數
- lease
如果目錄或檔案具有作用中的租用,則為必要專案。 值可以是 DataLakeLeaseClient 物件或租用識別碼作為字串。
- if_modified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,則任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源在指定的時間後修改,才能指定此標準執行作業。
- if_unmodified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,則任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源沒有在指定的日期/時間後修改,才能指定此標頭執行作業。
- etag
- str
ETag 值,或萬用字元 (*)。 用來檢查資源是否已變更,並根據 match_condition 參數所指定的條件採取行動。
- match_condition
- MatchConditions
要用於 etag 的比對條件。
使用指定的金鑰解密服務端的資料。 您必須透過 HTTPS 使用客戶提供的金鑰。 如果檔案是以客戶提供的金鑰建立,則為必要專案。
- timeout
- int
以秒為單位設定作業的伺服器端逾時。 如需詳細資訊,請參閱 https://learn.microsoft.com/rest/api/storageservices/setting-timeouts-for-blob-service-operations 。 此值不會在用戶端上追蹤或驗證。 若要設定用戶端網路逾時,請參閱 這裡。
傳回
檔案的所有使用者定義中繼資料、標準 HTTP 屬性和系統屬性。
傳回類型
範例
取得檔案的屬性。
properties = file_client.get_file_properties()
query_file
可讓使用者藉由提供簡單的查詢運算式,在 datalake 檔案資料上選取/專案。 此作業會傳回 DataLakeFileQueryReader,使用者必須使用 readall () 或 readinto () 來取得查詢資料。
query_file(query_expression: str, **kwargs: Any) -> DataLakeFileQueryReader
參數
- on_error
- Callable[DataLakeFileQueryError]
在服務傳回的任何處理錯誤上呼叫的函式。
- file_format
- DelimitedTextDialect 或 DelimitedJsonDialect 或 QuickQueryDialect 或 str
選擇性。 定義目前儲存在檔案中的資料序列化。 預設值是將檔案資料視為以預設方言格式化的 CSV 資料。 這可以使用自訂 DelimitedTextDialect 或 DelimitedJsonDialect 或 「ParquetDialect」 (傳遞為字串或列舉) 來覆寫。 這些方言可以透過各自的類別、QuickQueryDialect 列舉或字串傳遞。
- output_format
- DelimitedTextDialect 或 DelimitedJsonDialect 或 list[ArrowDialect] 或 QuickQueryDialect 或 str
選擇性。 定義資料流程的輸出序列化。 根據預設,資料會傳回,因為它在檔案中表示。 藉由提供輸出格式,檔案資料將會根據該設定檔重新格式化。 這個值可以是 DelimitedTextDialect 或 DelimitedJsonDialect 或 ArrowDialect。 這些方言可以透過各自的類別、QuickQueryDialect 列舉或字串傳遞。
- lease
- DataLakeLeaseClient 或 str
如果檔案有作用中的租用,則為必要專案。 值可以是 DataLakeLeaseClient 物件或租用識別碼做為字串。
- if_modified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源在指定的時間後修改,才能指定此標準執行作業。
- if_unmodified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源沒有在指定的日期/時間後修改,才能指定此標頭執行作業。
- etag
- str
ETag 值,或萬用字元 (*)。 用來檢查資源是否已變更,並根據 match_condition 參數所指定的條件採取行動。
- match_condition
- MatchConditions
要用於 etag 的比對條件。
使用指定的金鑰解密服務端的資料。 您必須透過 HTTPS 使用客戶提供的金鑰。 如果檔案是以 Customer-Provided 金鑰建立,則為必要專案。
- timeout
- int
以秒為單位設定作業的伺服器端逾時。 如需詳細資訊,請參閱 https://learn.microsoft.com/rest/api/storageservices/setting-timeouts-for-blob-service-operations 。 此值不會在用戶端上追蹤或驗證。 若要設定用戶端網路逾時,請參閱 這裡。
傳回
DataLakeFileQueryReader) (串流物件
傳回類型
範例
藉由提供簡單的查詢運算式,在 datalake 檔案資料上選取/專案。
errors = []
def on_error(error):
errors.append(error)
# upload the csv file
file_client = datalake_service_client.get_file_client(filesystem_name, "csvfile")
file_client.upload_data(CSV_DATA, overwrite=True)
# select the second column of the csv file
query_expression = "SELECT _2 from DataLakeStorage"
input_format = DelimitedTextDialect(delimiter=',', quotechar='"', lineterminator='\n', escapechar="", has_header=False)
output_format = DelimitedJsonDialect(delimiter='\n')
reader = file_client.query_file(query_expression, on_error=on_error, file_format=input_format, output_format=output_format)
content = reader.readall()
remove_access_control_recursive
移除路徑和子路徑上的存取控制。
remove_access_control_recursive(acl: str, **kwargs: Any) -> AccessControlChangeResult
參數
- acl
- str
移除檔案和目錄的 POSIX 存取控制許可權。 此值是以逗號分隔的存取控制專案清單。 每個存取控制專案 (ACE) 都包含範圍、類型,以及格式為 「[scope:][type]:[id]」 的使用者或群組識別碼。
- progress_hook
- <xref:func>(AccessControlChanges)
呼叫端可以追蹤作業進度的回呼,以及收集無法變更存取控制的路徑。
- continuation_token
- str
選擇性接續權杖,可用來繼續先前停止的作業。
- batch_size
- int
選擇性。 如果資料集大小超過批次大小,作業將會分割成多個要求,以便追蹤進度。 批次大小應介於 1 到 2000 之間。 未指定的預設值為 2000。
- max_batches
- int
選擇性。 定義單一變更存取控制作業可以執行的批次數目上限。 如果在處理所有子路徑之前達到最大值,則可以使用接續權杖繼續作業。 空值表示未系結中的批次數目上限,且作業會持續到結尾為止。
- continue_on_failure
- bool
如果設定為 False,作業會在遇到使用者錯誤時快速終止, (4XX) 。 如果為 True,作業將會忽略使用者錯誤,並在目錄的其他子實體上繼續進行作業。 只有在發生使用者錯誤時,continue_on_failure為 True 時,才會傳回接續權杖。 如果未設定預設值,則此預設值為 False。
- timeout
- int
以秒為單位設定作業的伺服器端逾時。 如需詳細資訊,請參閱 https://learn.microsoft.com/rest/api/storageservices/setting-timeouts-for-blob-service-operations 。 此值不會在用戶端上追蹤或驗證。 若要設定用戶端網路逾時,請參閱 這裡。
傳回
遞迴作業的摘要,包括成功和失敗的計數,以及在作業提前終止時接續權杖。
傳回類型
例外狀況
如果權杖可用,則使用者可以使用 AzureError 的 continuation_token 欄位重新開機作業。
rename_file
重新命名原始程式檔。
rename_file(new_name: str, **kwargs: Any) -> DataLakeFileClient
參數
- content_settings
- ContentSettings
用來設定路徑屬性的 ContentSettings 物件。
- source_lease
- DataLakeLeaseClient 或 str
來源路徑的租用識別碼。 如果指定,來源路徑必須具有作用中的租用,且租用識別碼必須相符。
- lease
如果檔案/目錄有作用中的租用,則為必要專案。 值可以是 LeaseClient 物件或租用識別碼做為字串。
- if_modified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源在指定的時間後修改,才能指定此標準執行作業。
- if_unmodified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源沒有在指定的日期/時間後修改,才能指定此標頭執行作業。
- etag
- str
ETag 值,或萬用字元 (*)。 用來檢查資源是否已變更,並根據 match_condition 參數所指定的條件採取行動。
- match_condition
- MatchConditions
要用於 etag 的比對條件。
- source_if_modified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,則任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源在指定的時間後修改,才能指定此標準執行作業。
- source_if_unmodified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,則任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源沒有在指定的日期/時間後修改,才能指定此標頭執行作業。
- source_etag
- str
來源 ETag 值或萬用字元 (*) 。 用來檢查資源是否已變更,並根據 match_condition 參數所指定的條件採取行動。
- source_match_condition
- MatchConditions
要用於 etag 的來源比對條件。
- timeout
- int
以秒為單位設定作業的伺服器端逾時。 如需詳細資訊,請參閱 https://learn.microsoft.com/rest/api/storageservices/setting-timeouts-for-blob-service-operations 。 用戶端上不會追蹤或驗證此值。 若要設定用戶端網路逾時,請參閱 這裡。
傳回
已重新命名的檔案用戶端
傳回類型
範例
重新命名來源檔案。
new_client = file_client.rename_file(file_client.file_system_name + '/' + 'newname')
set_access_control
設定路徑的擁有者、群組、許可權或存取控制清單。
set_access_control(owner: str | None = None, group: str | None = None, permissions: str | None = None, acl: str | None = None, **kwargs) -> Dict[str, str | datetime]
參數
- permissions
- str
只有在帳戶啟用階層命名空間時,才有選擇性且有效。 設定檔案擁有者、檔案擁有者群組和其他專案的 POSIX 存取權限。 每個類別都可以被授與讀取、寫入或執行許可權。 也支援黏性位。 支援符號 (rwxrw-rw-) 和 4 位數八進位標記法 (例如 0766) 。 許可權和 acl 互斥。
- acl
- str
設定檔案和目錄的 POSIX 存取控制許可權。 此值是以逗號分隔的存取控制專案清單。 每個存取控制專案 (ACE) 都包含範圍、類型、使用者或群組識別碼,以及格式為 「[scope:][type]:[id]:[permissions]」 的許可權。 許可權和 acl 互斥。
- lease
- DataLakeLeaseClient 或 str
如果檔案/目錄具有作用中的租用,則為必要專案。 值可以是 LeaseClient 物件或租用識別碼做為字串。
- if_modified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,則任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源在指定的時間後修改,才能指定此標準執行作業。
- if_unmodified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,則任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源沒有在指定的日期/時間後修改,才能指定此標頭執行作業。
- etag
- str
ETag 值,或萬用字元 (*)。 用來檢查資源是否已變更,並根據 match_condition 參數所指定的條件採取行動。
- match_condition
- MatchConditions
要用於 etag 的比對條件。
- timeout
- int
以秒為單位設定作業的伺服器端逾時。 如需詳細資訊,請參閱 https://learn.microsoft.com/rest/api/storageservices/setting-timeouts-for-blob-service-operations 。 用戶端上不會追蹤或驗證此值。 若要設定用戶端網路逾時,請參閱 這裡。
- response dict
回應聽寫 (Etag 和上次修改) 。
set_access_control_recursive
在路徑和子路徑上設定存取控制。
set_access_control_recursive(acl: str, **kwargs: Any) -> AccessControlChangeResult
參數
- acl
- str
設定檔案和目錄的 POSIX 存取控制許可權。 此值是以逗號分隔的存取控制專案清單。 每個存取控制專案 (ACE) 都包含範圍、類型、使用者或群組識別碼,以及格式為 「[scope:][type]:[id]:[permissions]」 的許可權。
- progress_hook
- <xref:func>(AccessControlChanges)
呼叫端可以追蹤作業進度的回呼,以及收集無法變更存取控制的路徑。
- continuation_token
- str
選擇性的接續權杖,可用來繼續先前停止的作業。
- batch_size
- int
選擇性。 如果資料集大小超過批次大小,作業將會分割成多個要求,以便追蹤進度。 批次大小應介於 1 到 2000 之間。 未指定的預設值為 2000。
- max_batches
- int
選擇性。 定義單一變更存取控制作業可以執行的批次數目上限。 如果在處理所有子路徑之前達到最大值,則可以使用接續權杖繼續作業。 空值表示未系結中的批次數目上限,且作業會持續到結束為止。
- continue_on_failure
- bool
如果設定為 False,作業會在遇到使用者錯誤時快速終止, (4XX) 。 如果為 True,作業將會忽略使用者錯誤,並在目錄的其他子實體上繼續進行作業。 只有在發生使用者錯誤時,continue_on_failure為 True 時,才會傳回接續權杖。 如果未設定預設值,則為 False。
- timeout
- int
以秒為單位設定作業的伺服器端逾時。 如需詳細資訊,請參閱 https://learn.microsoft.com/rest/api/storageservices/setting-timeouts-for-blob-service-operations 。 用戶端上不會追蹤或驗證此值。 若要設定用戶端網路逾時,請參閱 這裡。
傳回
遞迴作業的摘要,包括成功和失敗的計數,以及如果作業提前終止,則為接續權杖。
傳回類型
例外狀況
如果權杖可用,使用者可以使用 AzureError 的 continuation_token 欄位來重新開機作業。
set_file_expiry
設定檔案到期並刪除的時間。
set_file_expiry(expiry_options: str, expires_on: datetime | int | None = None, **kwargs) -> None
參數
- expiry_options
- str
必要。 表示到期時間的模式。 可能的值包括:'NeverExpire'、'RelativeToCreation'、'RelativeToNow'、'Absolute'
將檔案設定為到期的時間。 當 expiry_options 為 RelativeTo*時,expires_on應該是以毫秒為單位的 int。 如果expires_on的類型是 datetime,它應該以 UTC 時間為單位。
- timeout
- int
以秒為單位設定作業的伺服器端逾時。 如需詳細資訊,請參閱 https://learn.microsoft.com/rest/api/storageservices/setting-timeouts-for-blob-service-operations 。 用戶端上不會追蹤或驗證此值。 若要設定用戶端網路逾時,請參閱 這裡。
傳回類型
set_http_headers
設定檔案或目錄上的系統屬性。
如果已為content_settings設定一個屬性,則會覆寫所有屬性。
set_http_headers(content_settings: ContentSettings | None = None, **kwargs) -> Dict[str, Any]
參數
- lease
- DataLakeLeaseClient 或 str
如果指定,則只有在檔案系統的租用作用中且符合此識別碼時,set_file_system_metadata才會成功。
- if_modified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,則任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源在指定的時間後修改,才能指定此標準執行作業。
- if_unmodified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,則任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源沒有在指定的日期/時間後修改,才能指定此標頭執行作業。
- etag
- str
ETag 值,或萬用字元 (*)。 用來檢查資源是否已變更,並根據 match_condition 參數所指定的條件採取行動。
- match_condition
- MatchConditions
要用於 etag 的比對條件。
- timeout
- int
以秒為單位設定作業的伺服器端逾時。 如需詳細資訊,請參閱 https://learn.microsoft.com/rest/api/storageservices/setting-timeouts-for-blob-service-operations 。 此值不會在用戶端上追蹤或驗證。 若要設定用戶端網路逾時,請參閱 這裡。
傳回
file/directory-updated 屬性聽寫 (Etag 和上次修改)
傳回類型
set_metadata
設定指定檔案系統的一或多個使用者定義名稱/值組。 每次呼叫此作業都會取代附加至檔案系統的所有現有中繼資料。 若要從檔案系統中移除所有中繼資料,請呼叫此作業,而不使用中繼資料聽寫。
set_metadata(metadata: Dict[str, str], **kwargs) -> Dict[str, str | datetime]
參數
- lease
- DataLakeLeaseClient 或 str
如果指定,set_file_system_metadata只有在檔案系統的租用作用中且符合此識別碼時才會成功。
- if_modified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源在指定的時間後修改,才能指定此標準執行作業。
- if_unmodified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源沒有在指定的日期/時間後修改,才能指定此標頭執行作業。
- etag
- str
ETag 值,或萬用字元 (*)。 用來檢查資源是否已變更,並根據 match_condition 參數所指定的條件採取行動。
- match_condition
- MatchConditions
要用於 etag 的比對條件。
使用指定的金鑰加密服務端的資料。 您必須透過 HTTPS 使用客戶提供的金鑰。
- timeout
- int
以秒為單位設定作業的伺服器端逾時。 如需詳細資訊,請參閱 https://learn.microsoft.com/rest/api/storageservices/setting-timeouts-for-blob-service-operations 。 此值不會在用戶端上追蹤或驗證。 若要設定用戶端網路逾時,請參閱 這裡。
傳回
檔案系統更新的屬性聽寫 (Etag 和上次修改) 。
update_access_control_recursive
修改路徑和子路徑上的存取控制。
update_access_control_recursive(acl: str, **kwargs: Any) -> AccessControlChangeResult
參數
- acl
- str
修改檔案和目錄的 POSIX 存取控制許可權。 此值是以逗號分隔的存取控制專案清單。 每個存取控制專案 (ACE) 都包含範圍、類型、使用者或群組識別碼,以及格式為 「[scope:][type]:[id]:[permissions]」 的許可權。
- progress_hook
- <xref:func>(AccessControlChanges)
呼叫端可以追蹤作業進度的回呼,以及收集無法變更存取控制的路徑。
- continuation_token
- str
選擇性接續權杖,可用來繼續先前停止的作業。
- batch_size
- int
選擇性。 如果資料集大小超過批次大小,作業將會分割成多個要求,以便追蹤進度。 批次大小應介於 1 到 2000 之間。 未指定的預設值為 2000。
- max_batches
- int
選擇性。 定義單一變更存取控制作業可以執行的批次數目上限。 如果在處理所有子路徑之前達到最大值,則可以使用接續權杖繼續作業。 空值表示未系結中的批次數目上限,且作業會持續到結尾為止。
- continue_on_failure
- bool
如果設定為 False,作業會在遇到使用者錯誤時快速終止, (4XX) 。 如果為 True,作業將會忽略使用者錯誤,並在目錄的其他子實體上繼續進行作業。 只有在發生使用者錯誤時,continue_on_failure為 True 時,才會傳回接續權杖。 如果未設定預設值,則此預設值為 False。
- timeout
- int
以秒為單位設定作業的伺服器端逾時。 如需詳細資訊,請參閱 https://learn.microsoft.com/rest/api/storageservices/setting-timeouts-for-blob-service-operations 。 此值不會在用戶端上追蹤或驗證。 若要設定用戶端網路逾時,請參閱 這裡。
傳回
遞迴作業的摘要,包括成功和失敗的計數,以及在作業提前終止時接續權杖。
傳回類型
例外狀況
如果權杖可用,則使用者可以使用 AzureError 的 continuation_token 欄位重新開機作業。
upload_data
將資料上傳至檔案。
upload_data(data: bytes | str | Iterable | IO, length: int | None = None, overwrite: bool | None = False, **kwargs) -> Dict[str, Any]
參數
- data
要上傳至檔案的內容
- content_settings
- ContentSettings
用來設定路徑屬性的 ContentSettings 物件。
- lease
- DataLakeLeaseClient 或 str
如果 Blob 具有作用中租用,則為必要項目。 值可以是 DataLakeLeaseClient 物件或租用識別碼做為字串。
- umask
- str
選擇性且只有在帳戶啟用階層命名空間時才有效。 建立檔案或目錄且父資料夾沒有預設 ACL 時,umask 會限制要建立的檔案或目錄許可權。 產生的許可權是由 p ^u 提供,其中 p & 是許可權,而您是 umask。 例如,如果 p 是 0777,而您是 0057,則產生的許可權為 0720。 目錄的預設許可權為 0777,而檔案的預設許可權為 0666。 預設 umask 為 0027。 umask 必須在 4 位數的八進位標記法中指定 (,例如 0766) 。
- permissions
- str
選擇性且只有在帳戶啟用階層命名空間時才有效。 設定檔案擁有者、檔案擁有者群組及其他的 POSIX 存取權限。 每個類別都可以被授與讀取、寫入或執行許可權。 也支援黏性位。 支援符號 (rwxrw-rw-) 和 4 位數八進位標記法 (例如 0766) 。
- if_modified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源在指定的時間後修改,才能指定此標準執行作業。
- if_unmodified_since
- datetime
日期時間值。 Azure 預期傳入的日期值是 UTC。 如果包含時區,任何非 UTC 日期時間都會轉換成 UTC。 如果在沒有時區資訊的情況下傳入日期,則會假設為 UTC。 只有資源沒有在指定的日期/時間後修改,才能指定此標頭執行作業。
- validate_content
- bool
如果為 true,則計算檔案每個區塊的 MD5 雜湊。 儲存體服務會檢查與已傳送雜湊一起抵達之內容的雜湊。 如果使用 HTTP 而非 HTTPs,這主要是在使用 HTTP 而非 HTTPs 時偵測連線上的 bitflip,因為 HTTPs (預設) ,將會經過驗證。 請注意,此 MD5 雜湊不會隨 Blob 儲存。 另請注意,如果啟用,將不會使用記憶體有效率上傳演算法,因為計算 MD5 雜湊需要緩衝處理整個區塊,因此會破壞記憶體有效率演算法的用途。
- etag
- str
ETag 值,或萬用字元 (*)。 用來檢查資源是否已變更,並根據 match_condition 參數所指定的條件採取行動。
- match_condition
- MatchConditions
要用於 etag 的比對條件。
使用指定的金鑰加密服務端的資料。 您必須透過 HTTPS 使用客戶提供的金鑰。
- timeout
- int
以秒為單位設定作業的伺服器端逾時。 如需詳細資訊,請參閱 https://learn.microsoft.com/rest/api/storageservices/setting-timeouts-for-blob-service-operations 。 用戶端上不會追蹤或驗證此值。 若要設定用戶端網路逾時,請參閱 這裡。 這個方法可能會對服務進行多個呼叫,而逾時會個別套用至每個呼叫。
- chunk_size
- int
以區塊方式上傳檔案的最大區塊大小。 預設為 1001024 1024或 100MB。
- encryption_context
- str
指定要在檔案上設定的加密內容。
傳回
回應聽寫 (Etag 和上次修改) 。
屬性
api_version
用於要求的儲存體 API 版本。
location_mode
用戶端目前使用的位置模式。
根據預設,這會是「主要」。 選項包括 「主要」和「次要」。
primary_endpoint
完整的主要端點 URL。
primary_hostname
主要端點的主機名稱。
secondary_endpoint
如果已設定,則為完整的次要端點 URL。
如果無法使用,將會引發 ValueError。 若要明確指定次要主機名稱,請在具現化上使用選擇性 secondary_hostname 關鍵字引數。
例外狀況
secondary_hostname
次要端點的主機名稱。
如果無法使用,則為 None。 若要明確指定次要主機名稱,請在具現化上使用選擇性 secondary_hostname 關鍵字引數。
url
此實體的完整端點 URL,包括如果使用的 SAS 權杖。
這可能是主要端點或次要端點,視目前的 location_mode 而定。 :returns:此實體的完整端點 URL,包括如果使用的 SAS 權杖。 :rtype: str