我有一个名为test.txt
182.7 100.0
182.6 100.0
182.8 100.0
我想确保天气线以数字100.0
结束:
所以我使用以下代码:
for line in open('test.txt','rt'):
print repr(line),line.endswith('100.0\n')
print
但是Ubuntu的输出是:
'182.7 100.0 \ r \ n'错误
'182.6 100.0 \ r \ n'错误
'182.8 100.0'False
但是Windows Server 2008中的输出是:
'182.7 100.0 \ n'True
'182.6 100.0 \ n'真实
'182.8 100.0'False
我已经在开放功能中使用rt
,那么为什么不同系统之间存在差异呢?
答案 0 :(得分:2)
函数strip()
可以处理结束的换行符,它独立于所使用的操作系统,代码可以是
print "{line} {expr}".format(line=repr(line), expr=line.rstrip().endswith('100.0'))
答案 1 :(得分:1)
谢谢!答案现在明显了吗?该文件是在Windows上创建的,其中的行以"\r\n"
结尾,而不是"\n"
。只要您在文本模式下阅读 Windows上的文件,Python就可以隐藏它。但是你在Linux上阅读了这个文件,其中" text"和"二进制"模式不存在,你可以得到文件中的任何字节。
我的建议是在你移动文件的任何平台上强制行结束到本机约定。除此之外,在Python 2中,您可以在"通用换行模式"中打开文件。相反,为briefly explained here。