执行以下Python代码:
fn = 'test.txt'
file(fn, 'w+').write('test\ntest2')
content = file(fn, 'r').read()
print content.replace('\r', '\r').replace('\n', '\n')
打印的结果不依赖平台,都是:
test\ntest2
但是test.txt的内容却依赖平台而变化(用notepad++、vi等程序查看):
windows下是:test\r\ntest2
linux下却是:test\ntest2
我想问的问题是,如何保证Python写入文件的'\n'字符不随平台变化,即保证一定是'\n'?
章硕,js & python夏一一、乔3少 赞同这不是python的问题,windows的换行是\r\n,unix的是\n,mac的是\r。这是一个很经典的问题。因为不同系统下默认的换行符不同。字符处理时候,这样的“不同”会带来很大的问题,例如line[-2]和line.strpi()会因为平台不同返回不同的值。
<code class="text">content = file(fn, 'r').read() # test\r\ntest2 # 这里的换行会因不同系统而不同 </code>
file(fn, 'w+').write('test\ntest2') 改成file(fn, 'wb+').write('test\ntest2')就行了。Windows 平台上 Python 区分 Binary 和 ASCII 模式。ASCII 模式下换行符会在读写时自动换为 \r\n (详见 [1])。*nix 平台下没有这个区别。
python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号