如何在 Windows 中处理换行符 vs 在 Python Paramiko 中处理 Unix

How to deal with new line characters in Windows vs Unix in Python Paramiko

目前我正在做以下任务

  1. 使用 Python
  2. 在 Windows 中创建一个小文件
  3. 使用 Paramiko Python 库 SFTP 模块将此文件传输到远程 Unix 环境

面临的问题:

在 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 机器有问题:(

Paramiko 不支持转换传输文件的 EOL 序列。

上传前必须转换内容