Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import paramiko
- import io
- import zipfile
- import csv
- from azure.storage.blob import ContainerClient
- from azure.identity import ManagedIdentityCredential
- # Define your SFTP credentials and paths
- sftp_host = jv_sftp_hostname
- sftp_port = 22
- sftp_username = jv_sftp_username
- remote_dir = "/" + jv_sftp_path + "/"
- # Your private key as a string
- private_key_str = """-----BEGIN RSA PRIVATE KEY-----
- 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
- -----END RSA PRIVATE KEY-----"""
- private_key_file = io.StringIO(private_key_str)
- private_key = paramiko.RSAKey.from_private_key(private_key_file)
- # Establish transport and SFTP connection
- transport = paramiko.Transport((sftp_host, sftp_port))
- transport.connect(username=sftp_username, pkey=private_key)
- sftp = paramiko.SFTPClient.from_transport(transport)
- # List remote files
- file_list = sorted(sftp.listdir(remote_dir))
- print("Printing all of the zip files present: ", file_list)
- blob_url = ev_blob_account_url
- print("Blob URL : ", blob_url)
- # Create a ManagedIdentityCredential object
- credential = ManagedIdentityCredential()
- cc = ContainerClient(account_url=blob_url, container_name=ev_edp_container_in, credential=credential)
- with sftp.open(remote_dir + "BIX_Delta_CEP_Work_Interaction_Chat_Interaction_Chat_History_250301_1.zip", 'rb') as remote_file:
- zip_file = zipfile.ZipFile(io.BytesIO(remote_file.read()))
- for file_name in zip_file.namelist():
- if file_name.endswith('.csv') and 'manifest' not in file_name.lower():
- print(f"Reading file: {file_name}")
- with zip_file.open(file_name) as csv_file:
- blob_client = cc.get_blob_client("manogna_test.csv")
- while True:
- part_data = csv_file.read(1024 * 1024)
- if not part_data:
- break
- blob_client.upload_blob(part_data, overwrite=True, blob_type="AppendBlob")
- csv_file.seek(0)
- csv_reader = csv.reader(io.TextIOWrapper(csv_file, 'utf-8'))
- for row in csv_reader:
- print(row)
- blob_data_reader = cc.get_blob_client("manogna_test.csv")
- blob_data = blob_data_reader.download_blob()
- # Read the content of the blob (as a string)
- content = blob_data.readall().decode('utf-8')
- blobs = cc.list_blobs(name_starts_with="manogna")
- for blob in blobs:
- blob_name = blob.name
- print(blob_name)
- print(content)
- sftp.close()
- transport.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement