【发布时间】:2016-10-31 06:35:30
【问题描述】:
我想创建一个包含许多“页面”的文本文件,并将每个页面的字节偏移记录在一个单独的文件中。为此,我将字符串打印到主输出文件并使用bytes_written += file.write(str) 计算字节数。但是,字节偏移量通常是错误的。
我切换到bytes_written += os.write(fd, bytes(str, 'UTF-8')) 现在可以使用了。 write() 和 os.write() 有什么区别?还是仅仅因为我手动将字符串转换为 UTF-8 而导致返回值的差异?
【问题讨论】:
-
如果您在 Windows 上,并且正在以文本模式写入文件,则将在原始字符串只有一个结尾的每一行写入两个字节 (cr+lf)。如果
file.write()在这种情况下没有正确计算字节数,我会认为这是一个错误,但无论如何可以通过确保文件以"wb"模式打开来纠正问题。 -
关于text文件的另一个相似点:
tell返回的值不是文件中的字节索引,也不是字符索引.这只是seek可以用来返回该位置的数字,但您不应该对此做太多事情。
标签: python file python-3.x utf-8