目前我在做以下任务。
面临的问题:
在Windows上创建的换行符在传输过程中未正确转换为unix换行符。我在远程主机上的文件中看到了^ M字符。
任何想法或建议如何摆脱这种行为。
当我使用WinSCP传输同一文件时,我没有遇到这个问题。我想WinSCP有内置的功能来处理这个问题。
Python版本使用3.5。
第1步:
with open(myNewFile.txt,'w') as fileToUpload:
fileToUpload.write('MyOwnTxt'+'\n')
第2步:
COMP = remoteServerHost
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(COMP, username=user, password=password, allow_agent = False)
src = myNewFile.txt
dst = "/remotePath/myNewFile.txt"
ftp = ssh.open_sftp()
ftp.put(src , dst)
ftp.close()
ssh.close()
我很惊讶,因为没有人在SO或任何其他论坛中指明此问题。所以它让我觉得我的Windows机器上有问题:(
由于
答案 0 :(得分:1)
Paramiko不支持转换传输文件的EOL序列。
您必须在上传内容之前转换内容。
请参阅How to convert CRLF to LF on a Windows machine in Python。