fileinput设置编码python_关于python:结合就地过滤和fileinput模块中的编码设置

我试图使用fileinput模块的就地过滤功能来就地重写输入文件。

需要将编码(用于读取和写入)设置为latin-1,并尝试将openhook=fileinput.hook_encoded('latin-1')传递给fileinput.input,但由于错误而受阻

ValueError: FileInput cannot use an opening hook in inplace mode

仔细检查后,我发现fileinput文档明确声明了这一点:您不能同时使用inplace和openhook

我该如何解决?

据我所知,fileinput模块无法解决此问题。您可以结合使用codecs模块,os.rename()和os.remove()来完成相同的任务:

import os

import codecs

input_name = 'some_file.txt'

tmp_name = 'tmp.txt'

with codecs.open(input_name, 'r', encoding='latin-1') as fi, \

codecs.open(tmp_name, 'w', encoding='latin-1') as fo:

for line in fi:

new_line = do_processing(line) # do your line processing here

fo.write(new_line)

os.remove(input_name) # remove original

os.rename(tmp_name, input

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值