2

バイナリ ファイル (.gz ファイル) を追加モード (ab+) で開こうとしていました。

ファイル open() によって追加モードで開かれることで保証されるように、tell() はファイルの終わり (EOF) を指します。しかし、これはUbuntu 10.04でファイルを追加モードで開くと、ファイルポインタがまだファイルの終わりではなく先頭を指しているのとは異なります。しかし、My Mac OS X 10.8 では機能が期待どおりに正しく動作するため、これは当てはまりません。

Ubuntu 10.04 で見られる動作

Python 2.6.5 (r265:79063, Oct  1 2012, 22:04:36) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> fp = open("file_name.gz", "ab+")
>>> fp.tell()
0

ただし、シークを行うと正しい番号が得られます

>>> fp.seek(0, 2)
>>> fp.tell()
753236

Mac OS X 10.8 で見られる動作

Python 2.6.7 (r267:88850, Oct 11 2012, 20:15:00) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> fp = open("file_name.gz", "ab+")
>>> fp.tell()
753236

他のモード 'a' および 'a+b' でも同じ動作が観察されました。以前にそのような状況に遭遇した人はいますか?

4

1 に答える 1