バイナリ ファイル (.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' でも同じ動作が観察されました。以前にそのような状況に遭遇した人はいますか?