如何在没有默认窗口crlf的情况下生成py文件?

时间:2010-04-29 12:26:18

标签: python code-generation eval

如何从python中编写.py文件,使其类型不应该像'带有Windows CRLF的ASCII文件'

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

查看错误日志 - traceback

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 个答案:

答案 0 :(得分:1)

问题不在于CRLF,而是eval用于评估单个表达式,而不是整个程序。

您可以使用exec从字符串执行程序,或execfile直接从文件执行程序。

无论如何要回答原始问题,您可以通过以二进制模式打开文件来避免编写CRLF:f = open(filename, 'wb')

答案 1 :(得分:1)

我认为你正在寻找execfile功能。

答案 2 :(得分:1)

你可以:

  1. open(file, 'wb')或......
  2. 打开文件,以二进制模式写入文件
  3. 在使用类似data.replace('\r','')
  4. 之类的内容之前,从字符串中剥离CR-LF

    我会避开exec并使用execfile as mentioned by SilentGhost

答案 3 :(得分:0)

只需以二进制模式打开文件:open("myfile.py", "rwb")