Pythonでtxtテキストファイルを読み書きする操作方法を徹底解析

WBOY
リリース: 2016-07-06 13:29:48
オリジナル
1787 人が閲覧しました

1. ファイルを開いて作成する

リーリー


2. ファイルの読み込み
ステップ: 開く -- 読む -- 閉じる

リーリー


データの読み取りは、データの後処理に必要なステップです。 .txt は広く使用されているデータ ファイル形式です。一部の .csv、.xlsx、およびその他のファイルは、読み取りのために .txt ファイルに変換できます。私はよく Python に付属の I/O インターフェイスを使用してデータを読み取り、リストに保存し、その後 numpy 科学計算パッケージを使用してリスト データを配列形式に変換し、MATLAB のように科学計算を実行できるようにします。

以下は、txt ファイルを読み取るために一般的に使用されるコードであり、ほとんどの txt ファイルの読み取りに使用できます

リーリー

例えば、読み込むtxtファイルは以下の通りです

2016626171647895.png (429×301)

読み取った後、Enthought Canopy の変数ウィンドウで読み取ったデータを表示します。左側が POS、右側が Efield です。

2016626171713978.png (148×277)2016626171743777.png (147×280)

3. ファイルの書き込み(元のファイルを消去しないように注意してください)
手順: 開く -- 書き込み -- (保存) 閉じる
デフォルトでは「r」読み取り専用モードが開かれているため、データを直接書き込むことはできません

リーリー

最初に書き込み可能モードを指定する必要があります

リーリー

ただし、この時点ではデータはキャッシュに書き込まれるだけで、ファイルには保存されません。以下の出力からわかるように、元の設定はクリアされています。

リーリー
このファイルを閉じて、キャッシュ内のデータをファイルに書き込みます

リーリー
注: 編集されたファイルが存在する場合、この手順ではまずファイルがクリアされてから再書き込みされるため、この手順は非常に慎重に行う必要があります。では、ファイルをクリアしてから書き込みたくない場合はどうすればよいでしょうか?

r+ モードを使用すると、最初はクリアされませんが、次の例のように、元のファイルが置き換えられます: helloboy! は hello aay!
に置き換えられます。

リーリー
非代替を実現するにはどうすればよいですか?

リーリー
書き込む前にファイルを読み込んでから書き込むと、元のファイルを置き換えずに、書き込んだデータがファイルの末尾に追加されることがわかります。これは、r+ モードのポインタがデフォルトでファイルの先頭にあるため、read() を介してファイルを読み取った後、ポインタはファイルの末尾に移動します。ファイルにデータを書き込んでも問題ありません。ここでもモードを使用できます

リーリー
他のモードの概要については、以下の表を参照してください:


2016626170852899.png (713×317)

ファイルオブジェクトのメソッド:

f.readline() データを 1 行ずつ読み取ります
方法 1:

リーリー
方法 2:

リーリー
f.next() は、f.readline() と同様にデータを 1 行ずつ読み取ります。唯一の違いは、f.readline() は最後にデータがない場合に空を返すのに対し、f.next() は空を返さないことです。データを受信するとエラーが報告されます

リーリー
f.writelines() 複数行の書き込み

リーリー
f.seek(オフセット、オプション)

リーリー
この例では、以前に r+ モードを使用するときに、通常の挿入前に f.read() を実行する必要がある理由を完全に説明できます

f.seek(オフセット、オプション)
(1) オプション = 0、ファイル ポインターがファイルの先頭から「オフセット」バイトを指していることを示します
(2) Option=1 は、ファイルポインタをファイルの現在位置を指し、「オフセット」バイトを後方に移動することを意味します
(3) オプション = 2 は、ファイル ポインターをファイルの末尾にポイントし、「オフセット」バイトを前方に移動することを意味します

オフセット: 正の数値は右へのオフセットを意味し、負の数値は左へのオフセットを意味します

リーリー
f.flush() (ファイルを閉じずに) ファイルに変更を書き込みます

リーリー
リーリー
リーリー
f.tell() ポインタの位置を取得します

リーリー

4. コンテンツの検索と置換 1. コンテンツ検索

例: ファイル内の hello 数の統計
アイデア: ファイルを開き、ファイルの内容を調べ、正規表現を使用してキーワードを照合し、一致の数を数えます。

リーリー


リーリー
スクリプトは次のとおりです:

方法 1:

リーリー
方法 2:

リーリー

2、替换
实例:把test.txt 中的hello全部换为"hi",并把结果保存到myhello.txt中。

#!/usr/bin/python
import re
f1 = open('/tmp/test.txt')
f2 = open('/tmp/myhello.txt','r+')
for s in f1.readlines():
f2.write(s.replace('hello','hi'))
f1.close()
f2.close()
[root@node1 python]# touch /tmp/myhello.txt
[root@node1 ~]# cat /tmp/myhello.txt
hi girl!
hi boy!
hi man!
hi python!
ログイン後にコピー

实例:读取文件test.txt内容,去除空行和注释行后,以行为单位进行排序,并将结果输出为result.txt。test.txt 的内容如下所示:

#some words

Sometimes in life,
You find a special friend;
Someone who changes your life just by being part of it.
Someone who makes you laugh until you can't stop;
Someone who makes you believe that there really is good in the world.
Someone who convinces you that there really is an unlocked door just waiting for you to open it.
This is Forever Friendship.
when you're down,
and the world seems dark and empty,
Your forever friend lifts you up in spirits and makes that dark and empty world
suddenly seem bright and full.
Your forever friend gets you through the hard times,the sad times,and the confused times.
If you turn and walk away,
Your forever friend follows,
If you lose you way,
Your forever friend guides you and cheers you on.
Your forever friend holds your hand and tells you that everything is going to be okay. 

ログイン後にコピー

脚本如下:

f = open('cdays-4-test.txt')
result = list()
for line in f.readlines():                # 逐行读取数据
line = line.strip()                #去掉每行头尾空白
if not len(line) or line.startswith('#'):   # 判断是否是空行或注释行
continue                  #是的话,跳过不处理
result.append(line)              #保存
result.sort()                       #排序结果
print result
open('cdays-4-result.txt','w').write('%s' % '\n'.join(result))        #保存入结果文件

ログイン後にコピー

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!