Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中从文件读取和写入unicode_Python_Python 3.x_Unicode_Python Unicode - Fatal编程技术网

在Python中从文件读取和写入unicode

在Python中从文件读取和写入unicode,python,python-3.x,unicode,python-unicode,Python,Python 3.x,Unicode,Python Unicode,我在文件中有一个unicode string®。我想用Python读取它,将其转换为位,然后返回到unicode并写入一个新文件。 如果我制作一个变量test_unicode=“®”并使用它,它就会工作。但是,如果我从文件中读取此®,我会得到一些随机信息(尝试错误=替换、反斜杠替换、忽略)。这是我的剧本: def frombits(bits): chars = [] for b in range(int(len(bits) / 8)): byte = bits[b

我在文件中有一个unicode string®。我想用Python读取它,将其转换为位,然后返回到unicode并写入一个新文件。 如果我制作一个变量
test_unicode=“®”
并使用它,它就会工作。但是,如果我从文件中读取此®,我会得到一些随机信息(尝试错误=替换、反斜杠替换、忽略)。这是我的剧本:

def frombits(bits):
    chars = []
    for b in range(int(len(bits) / 8)):
        byte = bits[b*8:(b+1)*8]
        chars.append(chr(int(''.join([str(bit) for bit in byte]), 2)))
    return ''.join(chars)

bit_list = ''
with open('uni.txt', "r", encoding='utf-8', errors='replace') as f:
    byte = f.read(1)
    while(byte):
        bit_list+='{0:08b}'.format(ord(byte))
        byte=f.read(1)

test_unicode = '®'
test_unicode_bit_list = '{0:08b}'.format(ord(test_unicode))

print(bit_list)
print(test_unicode_bit_list)

test_unicode = ''.join(frombits(test_unicode_bit_list))
read_unicode = ''.join(frombits(bit_list))

print(test_unicode.encode("utf-8"))
print(read_unicode.encode("utf-8"))

f = open("uni_test.txt", 'wb')
f.write(test_unicode.encode("utf-8"))
f = open("uni_read.txt", 'wb')
f.write(read_unicode.encode("utf-8"))
如果我使用®创建一个文件uni.txt,并运行此脚本,最终会得到2个文件(第一个文件使用变量test_unicode创建,第二个文件使用从uni.txt读取的值):

uni_test.txt-->

uni_read.txt-->uniÿ


如何正确执行“读取-转换为位-转换为unicode-写入”过程?谢谢大家!

使用
Open(文件名,'rb')
打开文件以读取字节,然后用适当的编码保存它

使用
Open(文件名,'rb')
打开文件以读取字节,然后用适当的编码保存它

使用
Open(文件名,'rb')打开文件以读取字节
然后用适当的编码保存。我会将此作为答案发布,以便您可以接受并关闭此问题。使用
打开(文件名“rb”)打开文件以字节为单位读取。
然后用适当的编码保存。我会将此作为答案发布,以便您可以接受并关闭此问题。