您的位置:首页 > 编程语言 > Python开发

Python Windows下文件读写与二进制读写的区别

2015-07-15 17:56 591 查看
从我遇到的实际场景来看,区别主要在于对换行符的处理上。

概念:

”\n” – 换行符(LF) – 指向新的一行

“\r” – 回车符(CR) – 指到一行的开头

不同系统下的换行符有区别:

Window 下为 “\r\n”;

Unix 下为 “\n”;

Mac 下为 “\r”.

规则:

在 Windows 下用文件模式读写文件时 “\n” 会被转换成 “\r\n” 处理;

在 Windows 下用二进制模式读写文件时 “\r\n” 依然作 “\r\n” 处理,”\n” 依然作 “\n”处理。

验证代码:

# -*- coding: utf-8 -*-
"""
Created on Thu Jun 18 18:00:55 2015

@author: Lancer
"""

infile_address = "E:/Program Files/Anaconda/workspace/Test/he.txt"
module = [('rb', 'wb'), ('rb', 'w'), ('r', 'wb'), ('r', 'w')]
for i in range(4):
this_module = module[i]
read_module = this_module[0]
write_module = this_module[1]

outfile_address = "E:/Program Files/Anaconda/workspace/Test/r" + str(i)

infile = open(infile_address, read_module)
outfile = open(outfile_address, write_module)
while True:
line = infile.readline()
if not line:
break
outfile.write(line)
infile.close()
outfile.close()


输入:



输出r0 (“rb”, “wb”):



- 分析:

- - 输入:”\r\n” 保持不变

- - 输出:”\r\n” 保持不变

- - 故输出与输入保持一致

输出r1 (“rb”, “w”):



- 分析:

- - 输入:”\r\n” 保持不变

- - 输出:”\r\n” 中的 “\n” 转换成 “\r\n”

- - 故输入的 “\r\n” 全部变为 “\r\r\n”

输出r2 (“r”, “wb”):



- 分析:

- - 输入:”\r\n” 转换为 “\n”

- - 输出:”\n” 保持不变

- - 故输入的 “\r\n” 全部变为 “\n”

输出r3 (“r”, “w”):



- 分析:

- - 输入:”\r\n” 转换为 “\n”

- - 输出:又将”n” 转换回 “\r\n”

- - 故输出与输入保持一致
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: