如何生成不带默认Windows换行符的py文件?

1 投票
4 回答
939 浏览
提问于 2025-04-15 22:09

我该如何从Python写一个.py文件,使得它的类型不是像“带有Windows CRLF的ASCII文件”呢?

因为当我在Windows上运行file.write(data)时,它会写入文件,但当我尝试eval(open(file.py).read())时,它失败了,并且因为每行都有Windows的CRLF而出现语法错误……

请查看错误日志 - 回溯信息

ERROR:web-services:[25]:     info = eval(tools.file_open(terp_file).read(-1))
ERROR:web-services:[26]:   File "<string>", line 1
ERROR:web-services:[27]:     {
ERROR:web-services:[28]:

4 个回答

1

问题不在于CRLF(换行符),而是eval这个函数是用来计算一个单独的表达式,而不是整个程序。

你可以使用exec来从字符串中执行一个程序,或者用execfile直接从文件中执行程序。

不过,针对你最开始的问题,你可以通过以二进制模式打开文件来避免写入CRLF:f = open(filename, 'wb')

1

我觉得你在找的是 execfile 这个函数。

1

你可以:

  1. 以二进制模式打开文件,使用 open(file, 'wb') 这样的方式来写文件,或者……
  2. 在写入之前,先把字符串中的换行符去掉,可以用 data.replace('\r','') 这样的代码。

我建议不要使用 exec,而是用 execfile,就像 SilentGhost 提到的那样。

撰写回答