文件保存在内存问题

文件保存在内存问题

我用open读取了一个文件内容,我如何才能把这些内容以utf-8的方式放在内存中.自由读取



把一个非utf-8的文本文件,重新保存为一个utf-8的文件


QUOTE:
原帖由 nameliba 于 2008-9-17 13:24 发表
我用open读取了一个文件内容,我如何才能把这些内容以utf-8的方式放在内存中.自由读取



把一个非utf-8的文本文件,重新保存为一个utf-8的文件

#!/usr/bin/env python
# -*- coding: utf-8 -*-

file_in = open('input.txt')
lines = [line.decode('utf-8') for line in file_in.readlines()]
file_in.close()

file_out = open('output.txt', 'w')
file_out.writelines(lines)
file_out.close()


你的例子我直接无法成功。我这样修改后才成功的
input.txt 是GB2312
output.txt 是utf-8
这两个文件是我用Emedit编辑成固定文件编码的。那还我在用Python打开,我代码是这样的:

#!/usr/bin/env python
#coding=utf-8

file_in = open('input.txt')
lines = [line.decode('gb2312') for line in file_in.readlines()]
file_in.close()
file_out = open('output.txt', 'w')
for line in lines:
        file_out.write(line.encode('utf-8'))
file_out.close()
有关问题。open这个方法能指定用什么编码方式打开文件吗?比如open('www.txt','r','utf-8')
文档帮助我只看到open( filename[, mode[, bufsize]]) 这个,貌似没有
还有别的方法吗?
codecs.open 有这个方法
我这有一个读取gbk,然后写成utf-8的程序

#coding:gbk
localurl = '/tmp/aa.txt'
f1 = open(localurl)
d1 = f1.read()
f1.close()
#---------------------------------------------
d2 = d1.decode('gbk').encode('utf-8')
f2 = open(localurl,'w')
f2.write(d2)
f2.close()