2012-03-11 27 views
1

私は非テキストファイルを読みたいです。拡張子は".map"ですが、メモ帳で開くことができます。このファイルをPythonでどのように開くべきですか?非テキストファイルをPythonに読み込む

file = open("path-to-file","r")は機能しません。 このようなファイルまたはディレクトリはありません:エラー。それはまだ私にNo such file or directory: 'D:\x08owtie-0.12.7-win32\x08owtie-0.12.7\\output_635\results_NC_000117.fna.1.ebwt.map'エラーになります

file = open("D:\bowtie-0.12.7-win32\bowtie-0.12.7\output_635\results_NC_000117.fna.1.ebwt.map","rb") 

を:私はfollwingない場合

111 + gi|89106884|ref|AC_000091.1| 725803 TCGAGATCGACCATGTTGCCCGCCT IIIIIIIIIIIIIIIIIIIIIIIII 0 14:A>G 457 + gi|89106884|ref|AC_000091.1| 32629 CCGTGTCCACCGACTACGACACCTC IIIIIIIIIIIIIIIIIIIIIIIII 0 4:C>G,22:T>C 779 + gi|89106884|ref|AC_000091.1| 483582 GATCACCCACGCAAAGATGGGGCGA IIIIIIIIIIIIIIIIIIIIIIIII 0 15:A>G,18:C>G 784 + gi|89106884|ref|AC_000091.1| 226200 ACCGATAGTGAACCAGTACCGTGAG IIIIIIIIIIIIIIIIIIIIIIIII 1

は、ここに私のファイルは次のようになります。ファイルがバイナリでないか、パーミッションがないためですか?

これは助けになるでしょうか。

+0

「動作しません」? –

+0

"私にとってはうまくいかない"と定義する。 [faq]と[ask]を読んで、質問に記入する必要がある基本情報を理解してください。イメージングは​​自動車修理工場に入って「私の車は走りません、何が間違っていますか」と言っていますか? (そして車はどこにも見えません) –

+0

サンプルファイルをアップロードすると役に立つかもしれません。 – Adobe

答えて

6

バイナリファイルはバイナリモードを使用する必要があります。

f = open("path-to-file","rb") 

しかし、適切な権限を持っていない場合や、ファイル自体の形式がわからない場合は役に立ちません。

EDIT:

明らかにエラーメッセージを読んで気にしませんでした、またはあなたはそれが使用しているファイル名は、あなたが期待されるものではないことに気づいているだろう。

f = open("D:\\bowtie-0.12.7-win32\\bowtie-0.12.7\\output_635\\results_NC_000117.fna.1.ebwt.map","rb") 
f = open(r"D:\bowtie-0.12.7-win32\bowtie-0.12.7\output_635\results_NC_000117.fna.1.ebwt.map","rb") 
+0

この方法を試しましたが、実際には機能しませんでした。たぶん、そのバイナリファイルではないという事実のために?私は質問を編集しました – dawnoflife

1

テキスト以外のファイルの場合は、binary形式を使用して開くことができます。これを試してみてください -

with open("path-to-file", "rb") as f: 
    byte = f.read(1) 
    while byte != "": 
     byte = f.read(1) # Do stuff with byte. 

例外は、内側のブロックで提起されている場合を含むファイルを開いたり閉じたりwithステートメント・ハンドル、。

フォーマットはバイナリなので、読んだ後に何をするのかを知る必要があります。また、ここで私は一度に1バイトを読む、あなたもより大きなチャンクサイズを定義することができます。

更新日:これはおそらくバイナリファイルではありません。ファイルのエンコーディングに問題がある可能性があります。文字がASCIIでないか、Unicodeの文字セットに属する可能性があります。これを試してみてください - あなたはターミナルでこれをプリントアウトした場合、端末はこの文字セットをサポートしていない可能性がありますから、あなたはまだちんぷんかんぷんを得る可能性があります

import codecs 
f = codecs.open(u'path-to-file','r','utf-8') 
print f.read() 
f.close() 

。私は助言するだろう&は、適切に開かれたと仮定してテキストを処理する。

Source

+0

'rb'オプションでファイルを開くと、私のために動作しないようです:/ – dawnoflife

+0

更新された答えを確認してください –

1

あなたはここにUnixとWindowsの間のわずかな差に直撃しています。

メモ帳に記載されているので、Windowsでこれを実行している必要があります。 DOS/Windowsの土地では、バイナリファイルを開くには、バイナリに属性 'b'を指定する必要があります。 Unix/Linuxはもう少しリラックスしています。属性 'b'を省略すると、依然としてバイナリファイルが開きます。

Cライブラリのfopen()呼び出しでも同じ動作が示されます。

+0

* nixのテキストファイルとバイナリファイルの違いがないからです。 –

関連する問題