【发布时间】:2013-12-26 15:03:15
【问题描述】:
我在文本模式的文件中写了一个流。
# python code
f = open("somewhere in my computer","w")
f.write("Hello\nWorld")
f.write(chr(26)) # writing ascii character #26 to file
f.write("hhh")
f.close()
我无法读取 ASCII 字符 #26 之后的字节。我知道我应该用二进制模式打开文件。是 ascii 字符 #26 EOF 字符。如您所知,没有这样的东西,即没有EOF 字符。那么问题是什么?这是操作系统相关的问题吗? (我在 Microsoft Windows 中尝试过)。
【问题讨论】:
-
为我工作 (OSX)。贴出你用来阅读的代码。
-
f = open("somewhere in my computer","r") t = f.read() print len(t) # 告诉 11 并且文件在结尾
-
我认为在类 unix 系统中,文本文件和二进制文件没有区别。
-
"我知道我应该用二进制模式打开文件。"就这样做吧。在 DOS/Windows 中,以文本模式打开的文件将 ASCII 26 (control-Z) 解释为文件结束标记,即使在 ASCII 标准中实际上并没有文件结束字符这样的东西。这是一个特定于操作系统的怪癖——几乎所有其他现代操作系统都不会这样做(尽管可能还有其他操作系统,所以我不会明确说明)......
-
@HesamQodsi 另一方面,我认为当您开发应用程序时, 您的工作是考虑该应用程序如何与任何环境交互的每一个细节(操作系统、库、框架、API 等)它会发现自己在其中运行......这将包括如何在该特定环境中正确打开和解析文件,以及大量其他细节......跨度>
标签: python windows file unix character