gpt4 book ai didi

python - 尽管已写入,但文件仍为空

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:44 25 4
gpt4 key购买 nike

我一直在阅读有关编码和 python I/O 文档,但由于我对编程有点陌生,所以了解不多。我只是想读取一个文本文件,然后将每一行保存到另一个文本文件中。但其中一些行是日语字符,尽管打印时它们在 Python IDE 中正确显示,但文件中生成的文本只是空的。

这就是我正在尝试做的事情:

filename = 'test.txt' # File with the japanese characters
filename2 = 'test2.txt'

text = open(filename, 'rb') # I've tried opening it as 'utf-8' too
text2 = open(filename2, 'w', encoding='utf-8') # Output file

for line in text:
new_line = line.decode() # From bytes to utf-8
print(new_line) # Just to check
text2.write(new_line)

# Checking if file was written
text3 = open(filename2, 'r', encoding='utf-8')

for line2 in text3:
print(line2 + 'something')

此代码仅打印输入文件中的行,但是当使用最后一位打印输出文件中的内容时,它不会打印任何内容。我在 Linux 上尝试这个,输出文件 test2.txt 是空的,甚至没有英文行。如果我尝试在 Windows 上运行此程序,则会收到有关在使用 .write() 时 chammap 无法识别字符或其他内容的错误。如果我删除所有日语行,效果就很好。我还尝试过使用 utf-8 编码(它已经以这种方式保存,但以防万一)而不是字节打开输入文件,但结果是相同的。

以防万一,这是日语台词之一:

▣世界から解放され▣

我使用的是 Python 3.5.2。

最佳答案

编码没问题,看不到上次打印结果的问题是你已经打开了文件test2.txt进行写入。在显式关闭流 text2 之前,您将无法从另一个流中的文件读取。所以:

# close write stream
text2.close()
# now you can open the file again to read from it
text3 = open(filename2,'r',encoding='utf-8')

在 Linux 和 OSX 上测试它的结果:

$ echo "▣世界から解放され▣" > test.txt
$ python3.5 script.py
▣世界から解放され▣

▣世界から解放され▣
something

关于python - 尽管已写入,但文件仍为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46247680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com