python文件操作(明细)

关于读取文件的一些小细节的总结

python中文件的读取写入比较方便,当时难免在使用的时候回出现错误,接下来就对该内容做一个总结

  • 获取系统默认编码
import sys
print(sys.getdefaultencoding())

输出结果:

utf-8
#type : str

在读取文本的时候,会使用系统默认的编码但是呢,我们也可以自己更改编码格式。

open('XXX', encoding='utf-8')

python支持非常多的文本编码,几个常见的编码是ascii,latin-1,utf-8等,latin-1是字节0-255到U+0000到U+00FF范围内Unicode字符串直接映射,使用该编码永远不会得到出现解码错误。使用latin-1编码读取一个文件的时候 也许不能产生完全正确的文本解码数据, 但是它也能从中提取出足够多的有用数据。同 时,如果你之后将数据回写回去,原先的数据还是会保留的。


默认情况下,Python会以统一模式处理换行符。 这种模式下,在读取文本的时候, Python可以识别所有的普通换行符并将其转换为单个 \n 字符。 类似的,在输出时会将 换行符 \n 转换为系统默认的换行符。 如果你不希望这种默认的处理方式,可以给 open() 函数传入参数 newline=’’ ,就像下面这样:

出现编码错误

可以使用如下这种方式:

f = open('XXX.txt', 'r', encoding='ascill', errors='replace)
f.read()
#####
g = open('XXX.txt', 'w', encoding='ascill', errors='ignore')

errors参数一般处理编码错误会使用默认的编码通常是(‘utf-8’)

打印输出至文件中

使用print函数的输出重定向到一个文件中去,使用print中的file关键字采纳数

with open('', 'w') as fp:
	print('hello world', file=fp)

这样就可以将文本写入文件了。

print()函数参数

  • sep 控制字符间的字符
  • end控制字符结尾字符
  • join函数,和sep使用方法一样,不过str.join()join的参数只能是字符串
#使用该函数需要经过特殊的处理
print(','.join(str(x) for x in row))

字节文本的使用

b = b'Hello World'
for c in b:
	print(c)

输出结果为:
72
101
108
108
111
32
87
111
114
108
100
如果想要从二进制文本中读取或写入文本,必须确保要进行解码

with open('somefile.bin', 'rb') as f:    
	data = f.read(16)   
    text = data.decode('utf-8')
with open('somefile.bin', 'wb') as f:    
	text = 'Hello World'    
	f.write(text.encode('utf-8'))

文件不存在才能写入

如果文件存在就不写入,如果存在呢,不做操作。

import os
if not os.path.exits('somefile')
	with open('somefile', 'w') as f:
		f.write('whllo world')
else:
	print('File')

字符串的I/O操作

你想要使用操作类文件对象的程序来操作文本或二进制字符串
使用 io.StringIO() 和 io.BytesIO() 类来创建类文件对象操作字符串数据。

import io
s = io.StringIO()
s.write('hello world')
print('This is a test')
s.getvalue()
>>> s = io
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值