2017-01-31 33 views
0

これは問題です。私は最近、WindowsからUbuntuに切り替えました。データファイルを解析するためのPythonスクリプトのいくつかは、エラーの原因となります。WindowsとLinuxのテキストファイルの読み込み

私の現在の計測出力何か、このデータファイル:

[ヘッダー]

各種情報WRT機器など

[データ]

ステータス、コードに、温度、フィールドなど.........

,0,300,0.013など...したがって、基本的に、このコードスニペットは、データファイルを読み取り、[データ]を[ヘッダー]からのすべての情報を解析し、関係なく、ヘッダがどのように適切な線で、実際のデータの読み出しを開始することを意味する

異なる楽器が異なるヘッダーを持つために配置されています。

f = open('file.dat') 
lines = f.readlines() 
i = 0 
while (lines[i]!="[Data]\n"): 
    i+=1 
i = i + 2 

このコードは、Windowsの細かい動作しますが、Ubuntuのでは、iの値は常に特定のデータ・ファイル内の行の合計数になります。だから私は問題が "[データ] \ n"行の処理であることを知っています。助けてくれてありがとう。

+0

私は上記のコードをpython 2.7とpython 3.5の両方でLinux(ubuntu 16.04)で試してみましたが、どちらもうまくいきました。おそらくあなたのLinuxマシンのコードに誤字がありますか? – Yojimbo

答えて

1

デフォルトのテキストモードでファイルを開くと、Windowsの\ r \ nは読み込まれると\ nに変換されます。 Linuxではこれは起こりません。あなたのデータファイルは、特にWindows上で作成された場合、\ r \ n存在する可能性があります。

open(filename, 'rU') 
+0

サイドノート:Python 3(またはPython 3に組み込まれた 'open'関数のバックポートであるPython 2の' io.open'を使用)では、ユニバーサル改行モードがデフォルトです(これは、 'newline'引数のための明示的な値)。モード文字列の 'U'はPython 2用であり、Py3では非推奨です。 – ShadowRanger

+0

完全に動作します。ありがとう。 –

関連する問題