Du har gjort nedladdningsdelen.
För uppladdningsdelen, se Hur överför man Pandas DataFrame till .csv på SFTP med Paramiko Library i Python? – Medan det är för Paramiko, pysftp Connection.open
metod
beter sig identiskt med Paramiko SFTPClient.open
, så koden är densamma.
Hela koden kan vara så här:
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())
Ovanstående uppdaterar samma fil. Om du vill ladda upp till en annan fil, använd denna:
# 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)
För ändamålet bufsize
, se:
Att skriva till en fil på SFTP-servern som öppnats med pysftp "öppen"-metoden är långsam
Obligatorisk varning:Ställ inte in cnopts.hostkeys = None
, såvida du inte bryr dig om säkerhet. För rätt lösning se Verifiera värdnyckel med pysftp
.