gpt4 book ai didi

python - 在法国的 Windows 服务器上使用 django 的换行符问题

转载 作者:可可西里 更新时间:2023-11-01 10:42:55 25 4
gpt4 key购买 nike

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

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

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

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

更多细节:这是一些代码,因此您可以准确地看到我是如何读取/呈现模板以及如何将它保存到文件中的。我的模板和模板字典中都没有非 ASCII 字符,所以我不怀疑这是一个 unicode 问题(我使用的是 python 2):

rstring = render_to_string('helpers.R') + "\n" + render_to_string('Rcalc-template.R', {'debug':1})
rscript_file = os.path.join(tmpdir, 'Rcalc-rendered.R')
fh = open(rscript_file, mode="w")
with fh:
fh.write(rstring)
subprocess.call(['Rscript', rscript_file],
universal_newlines=True,
stdout=log_filename,
stderr=subprocess.STDOUT,
shell=False)

我需要您做什么:如果有人知道如何让我的 AWS Windows 2012R2 实例像法国的 Windows 2012R2 VM 一样运行,那将非常有帮助。我尝试将我的 AWS 实例的语言更改为法语,但没有成功,即我的应用程序生成的文件仅包含 CRLF。我不太确定从这里去哪里。提前致谢!

最佳答案

Django 版本 我有机会远程进入部署了我的代码的服务器几分钟,发现 Django 版本存在差异!我部署的服务器有 django 1.7.1,我的测试版本有 1.8.17。所以,我去了我的测试 AWS 服务器并将 Django 版本移回 1.7.1,果然,错误是可重现的!所以,这不是 Windows、本地化或语言问题...

在发行说明中,它提到了 Fileuniversal newlines 的支持: https://docs.djangoproject.com/en/1.10/releases/1.8

我认为这是修复它的票据和提交?

https://code.djangoproject.com/ticket/8149 https://github.com/django/django/commit/eb4f6de980c5148ba48d4ed67f31cca27dd132a8

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

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

关于python - 在法国的 Windows 服务器上使用 django 的换行符问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41519036/

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