2010-04-29 55 views
1

我怎么能在Python写一个.py文件,使得它的类型不应该是这样“与Windows CRLF ASCII文件”如何生成没有默认窗口crlf的py文件?

,因为当我的窗口中运行file.write(data)它写入文件,但是当我尝试 eval(open(file.py).read())它失败,并给出了由于在每一行窗口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]: 
+0

什么是你想怎么办?为什么? – SilentGhost 2010-04-29 12:28:07

+0

也许你可以看看rstrip的功能。 – lbedogni 2010-04-29 12:28:57

+1

@SilentGhost我相信他正在尝试编写代码生成工具(因此是标签)。 – seanhodges 2010-04-29 12:30:42

回答

1

您可以:

  1. 通过与open(file, 'wb')或打开它...
  2. 地带的CR-LF类写二进制模式的文件像data.replace('\r','')

的东西写它之前的字符串我会避开exec和u se execfileas mentioned by SilentGhost

+0

感谢D.Shawley我不知道为什么,但它曾与“WB”它, 也应该工作了“W” - 无论如何谢谢你的即时帮助 – shahjapan 2010-04-29 12:41:07

+0

@shahjapan - !有一个很好的维基百科链接(http://en.wikipedia.org/wiki/ Newline#In_programming_languages),它描述_“二进制模式”_和_“文本模式”_之间的区别。 – 2010-04-29 13:18:12

1

的问题是不是与CRLF,但eval是用于评估单一的表达,而不是一个整个计划。

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

如果一定要回答你原来的问题,你可以通过在二进制模式打开文件避免编写CRLF:f = open(filename, 'wb')

0

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