gpt4 book ai didi

python - 通过 pysftp 附加到 SFTP 服务器上的现有文件

转载 作者:太空宇宙 更新时间:2023-11-03 21:30:47 26 4
gpt4 key购买 nike

我在 SFTP 服务器中有一个名为 Account.txt 的文件,我正在尝试向该文件追加一行。这是我的努力:

from io import StringIO
from pysftp import Connection, CnOpts

cnopts = CnOpts()
cnopts.hostkeys = None
with Connection('ftpserver.com'
,username= 'username'
,password = 'password'
,cnopts=cnopts
) as sftp:
with sftp.cd('MY_FOLDER'):
f = sftp.open('Account.txt', 'ab')
data='google|33333|Phu|Wood||true|2018-09-21|2018-09-21|google'
f.write(data+'\n')

当我运行上面的代码时,文件被覆盖,而不是附加。那么,如何附加新行但仍将旧行保留在文件中?

例如:

Account.txt 文件:

facebook|11111|Jack|Will||true|2018-09-21|2018-09-21|facebook
facebook|22222|Jack|Will||true|2018-09-21|2018-09-21|facebook

现在我想将行“google|33333|Phu|Wood||true|2018-09-21|2018-09-21|google”添加到文件中。我期待的结果:

Account.txt 文件

facebook|11111|Jack|Will||true|2018-09-21|2018-09-21|facebook
facebook|22222|Jack|Will||true|2018-09-21|2018-09-21|facebook
google|33333|Phu|Wood||true|2018-09-21|2018-09-21|google

希望大家能够理解。如果您不这样做,请发表评论。谢谢。

最佳答案

您的代码适用于我的 OpenSSH SFTP 服务器。

也许这是核心 FTP 服务器中的一个错误。

您可以尝试手动查找指向文件末尾的文件写入指针:

with sftp.open('Account.txt', 'r+b') as f:
f.seek(0, os.SEEK_END)
data='google|33333|Phu|Wood||true|2018-09-21|2018-09-21|google'
f.write(data+'\n')

关于python - 通过 pysftp 附加到 SFTP 服务器上的现有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53534783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com