ファイルから(最初の)行を読み込んでリストに追加するときに、私のpythonプログラムが何をするのかを理解できない問題があります。なんらかの理由で、最初の行は空でなければなりません。あるいは、最初の行を正しく読み取らないでしょう。最初の行が空であれば、空ではありません(少なくともPythonによるとは限りません)。 事は、私は、ファイルの2種類持って、次のとおりです。Python - テキストファイルの最初の行をリストに正しく読み込めません
まずファイルを形式である:
text:more text
another text:and more
と形態の第2のファイル:
text_file.txt
anothertext_file.txt
両方のファイルがUTF-あります8つのエンコードされたテキストファイル。私のプログラムにリストに追加されます両方のファイルの最初の行は、「テキスト」と「text_file.txt」が、たとえば言うしようとする任意のコードである
でも「場合が実行され得ることはありません
if something == "text":
...
何か "
は"テキスト "と同じです。
私は自分の問題がマシンコード(または何か)のどこかにあると仮定しています。私のコンピュータはテキストファイルの先頭にいくつかの目に見えないコードを書きます。多分?私は実際には、単に空行とANを追加することによって、問題の解決策を発見した行毎にファイルを読み込む句の場合:
if not "." in line:
...
やその他のファイルタイプで
:if not ":" in line:
...
ものであれば句仕事と私のプログラムは、(私はいつもファイルの先頭に空の行を追加する限り)それが想定していることをしますが、私のプログラムがそのまま動作している理由の本当の理由を見つけることができませんでした。また、すべてのファイルを編集したり、if節を自分のコードに追加したりすることが不要な、より簡単な解決策があれば、このような回避策を講じる必要はありません。
ここで何が起こっているのか理解していただければ幸いです。
編集:あなたのように人々が私のコードを求めてきたが、ここにある:
filelist = []
with open("filename.txt", "r", encoding="UTF-8") as f:
for line in f:
filelist.append(line.rstrip("\n"))
これが正常に動作しません。また、mxdsが言ったように試しました。
filelist = []
with open("filename.txt", "r", encoding="UTF-8") as f:
lines = f.readlines()
for line in lines:
filelist.append(line.rstrip("\n"))
これは動作しません。これは、最初の行の最初の文字のファイルにのみ問題です。
Edit2: 問題は、テキストファイルの先頭にバイトオーダーマークがあるようです。すばやいグーグル・グーグルの後、私はそれをどのように取り除くことができるかという解決策を見いだせなかった。私はメモ帳だけでファイルを作成しています。
最終編集: 明らかにメモ帳は実際のテキストエディタではありません。私はこの問題を避けるためにメモ帳からメモ帳にスワップします。メモ帳でテキストファイルを開いてテキストを追加すると、BOMが追加されますか、それともファイルの作成時にのみ行われるのでしょうか?
ファイルの読み方によっては、各行が改行文字で終わる場合と終わらない場合があります。 –
... BOM(バイトオーダーマーク - シバ)で始まる場合があります。 – Dilettant
これを見る前に、あなたのプログラムがあなたのファイルをどのように読んでいるのかを修正すべきだと言います。これらの2つの問題が結びついている可能性があります。コードを投稿すると、そのコードをお手伝いすることができます。 – kirkpatt