如何生成不带默认Windows换行符的py文件?
我该如何从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
你可以:
- 以二进制模式打开文件,使用
open(file, 'wb')
这样的方式来写文件,或者…… - 在写入之前,先把字符串中的换行符去掉,可以用
data.replace('\r','')
这样的代码。
我建议不要使用 exec
,而是用 execfile
,就像 SilentGhost 提到的那样。