Je hebt het downloadgedeelte gedaan.
Voor het uploadgedeelte, zie Hoe Pandas DataFrame over te zetten naar .csv op SFTP met behulp van Paramiko Library in Python? – Hoewel het voor Paramiko is, pysftp Connection.open
methode
gedraagt zich identiek aan Paramiko SFTPClient.open
, dus de code is hetzelfde.
Volledige code kan zijn als:
with sftp.open("/remote/path/data.csv", "r+", bufsize=32768) as f:
# Download CSV contents from SFTP to memory
df = pd.read_csv(f)
# Modify as you need (just an example)
df.at[0, 'Name'] = 'changed'
# Upload the in-memory data back to SFTP
f.seek(0)
df.to_csv(f, index=False)
# Truncate the remote file in case the new version of the contents is smaller
f.truncate(f.tell())
Het bovenstaande werkt hetzelfde bestand bij. Als je naar een ander bestand wilt uploaden, gebruik dan dit:
# Download CSV contents from SFTP to memory
with sftp.open("/remote/path/source.csv", "r") as f:
df = pd.read_csv(f)
# Modify as you need (just an example)
df.at[0, 'Name'] = 'changed'
# Upload the in-memory data back to SFTP
with sftp.open("/remote/path/target.csv", "w", bufsize=32768) as f:
df.to_csv(f, index=False)
Ten behoeve van bufsize
, zie:
Het schrijven naar een bestand op de SFTP-server die is geopend met de pysftp-methode "open" is traag
Verplichte waarschuwing:stel cnopts.hostkeys = None
in , tenzij u niet om veiligheid geeft. Voor de juiste oplossing zie Hostsleutel verifiëren met pysftp
.