Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 法国Windows服务器上使用django的换行出现问题_Python_Django_Windows_Localization_Newline - Fatal编程技术网

Python 法国Windows服务器上使用django的换行出现问题

Python 法国Windows服务器上使用django的换行出现问题,python,django,windows,localization,newline,Python,Django,Windows,Localization,Newline,问题:我的Django应用程序在向文件写入通过render_to_string读入的字符串时,会在每个CRLF之前引入一个CR。在我的模板文件中,我使用了CRLFs,Django处理应用程序编写了一个文件,在每个CRLF之前添加一个CR。请参阅下面的代码详细信息 然而:这只发生在我的客户端位于法国的Windows Server 12R2虚拟机上的我的应用程序上。我的物理Windows 10笔记本电脑、我的ubuntu实例和我的AWS Windows Server 12实例(我在安装到客户机上之前

问题:我的Django应用程序在向文件写入通过render_to_string读入的字符串时,会在每个CRLF之前引入一个CR。在我的模板文件中,我使用了CRLFs,Django处理应用程序编写了一个文件,在每个CRLF之前添加一个CR。请参阅下面的代码详细信息

然而:这只发生在我的客户端位于法国的Windows Server 12R2虚拟机上的我的应用程序上。我的物理Windows 10笔记本电脑、我的ubuntu实例和我的AWS Windows Server 12实例(我在安装到客户机上之前用于测试)没有添加CRs

注意事项:出于安全原因,我只能通过远程桌面访问客户端的虚拟机,因此我需要与IT组预约,以便探索和调试问题。这是9小时的时差,占用了他宝贵的时间。因此,我需要在AWS实例上重新创建此问题,以便尝试调试代码。当我说它引入了一个CR而不是CRLF时,我可能记错了——可能是我的代码引入了一个LF而不是CRLF。我一直在使用Notepad++和“显示所有字符”,以便在生成的文件中查看CR(或LF)和CRLF。我想Notepad++说我的错误文件是“Macintosh”,而我的起始模板文件是“Dos\Windows”

那么什么呢:生成的文件是一个R脚本。而且,WindowsR不喜欢CR作为换行符,因为在读取第一行后会给出一个错误。如果我获取生成的R脚本并在Notepad++中打开它,然后将换行符(通过状态栏的右下角)更改为Dos\Windows,那么我的Rscript将正常工作

更多详细信息:以下是一些代码,您可以清楚地看到我如何读取/呈现模板以及如何将其保存到文件中。我的模板和模板dict中都没有非ASCII字符,因此我不怀疑这是unicode问题(我使用的是python 2):


我需要你做什么:如果有人知道如何让我的AWS Windows 2012R2实例表现得像法国的Windows 2012R2 VM,那将非常有用。我尝试将AWS实例的语言更改为法语,但没有成功,即我的应用程序仅使用CRLFs生成文件。我真的不知道接下来该怎么办。提前谢谢

Django版本我有机会远程访问部署代码的服务器几分钟,但Django版本有所不同!我部署的服务器有django 1.7.1,测试版本有1.8.17。因此,我转到我的测试AWS服务器,将Django版本移回1.7.1,果然,错误是可以重现的!所以,这不是Windows或本地化或语言问题

在发行说明中,它提到了文件中对通用换行符的支持:

我想这是罚单,是谁修好的

我还可以通过将所有“\r”替换为“\n”来解决此问题:

rstring = rstring.replace("\r", "\n")

也许我需要以二进制模式写回文件,这样python就不会调整换行符了?或其他参考:在Windows上,将
\n
写入文件将转换为
\r\n
,除非在打开文件时指定二进制模式。如果要显式编写
\r\n
,请使用
'wb'
,否则您将得到
\r\n
。这是有道理的,我目前没有使用“wb”-您知道为什么它在两台不同的Windows计算机上会表现不同吗?它们都是Win服务器2012R2上的Python 2.7。我不知道为什么会发生这种情况。
rstring = rstring.replace("\r", "\n")