[Pythonの]ファイルの読み取りと書き込み

Pythonのファイルオブジェクトは、三つの"読み"のアプローチを提供します:読み取り()、readlineの()readlinesを() 各方法は、各時刻を読み取るデータの量を制限するために変数を受け入れることができます。

  • 各リード)(リード全体のファイルを、ファイルは、典型的には、文字列変数にコンテンツを使用されています。ファイルが安全であることを、利用可能なメモリよりも大きい場合、あなたは繰り返し呼び出すことができるread(size)方法を、サイズまで読んで、各コンテンツのバイト。
  • readlines()を1回読んで、ファイル全体(.readなど、)と同じ。自動的にファイルの内容を解析し().readlines 行のリストは、このリストは....のために... Pythonの構造によって処理することができます
  • readlineの()時間1本のラインを読むために、通常ははるかに遅いreadlinesより、()。一度ファイル全体を読み込むための十分なメモリがない場合にのみ、あなたはreadlineの()を使用してください。

:これらの三つの方法で各行の終わり「\ n」の読み込みが入って来た、それはにデフォルト設定はありません「\ n」を削除、我々は手動で削除する必要があります。


Pythonのファイルオブジェクト2「書き込み」方法を提供する:書き込み() writelinesを()

  • write()メソッドとリード()は、文字列へのreadline()メソッドは、対応するファイルに書き込まれます。
  • だけでなく、ために対応writelines()メソッドとreadlines()メソッドのリストの操作。これは、受信した文字列のリストを改行が自動的に追加されていない、ファイルに書き込むために、引数として、そのため、改行を明示的な結合を必要とします

オープン()モード・パラメータについて

'R':読みます

'W':書き込み

'A':追加

R '+' == R + W(読み書き可能な、ファイルがエラーに存在する場合(例外IOError))

+ R W「W +」==(読み取りと書き込み、ファイルが存在する場合に作成されます)

'A +' == + rは(書き込み可能で作成されたファイルが存在する場合、添加することができます)

それはバイナリファイルである場合の対応は、あなたは千万bを追加することができます。

'RB' '私たち' '赤ちゃん' 'RB +' 'I +' 苦いです '+'


例:

    二つのファイル、多くの行のIPアドレスを持つ各、同じIPアドレスに2つのファイルを見つけることがあります。

# coding:utf-8
import bisect

with open('test1.txt', 'r') as f1:# 'with'can close file automaticlly
    list1 = f1.readlines()
for i in range(0, len(list1)):
    list1[i] = list1[i].strip('\n')
with open('test2.txt', 'r') as f2:
    list2 = f2.readlines()
for i in range(0, len(list2)):
    list2[i] = list2[i].strip('\n')

list2.sort()
length_2 = len(list2)
same_data = []
for i in list1:
    pos = bisect.bisect_left(list2, i) #二分法
    if pos < len(list2) and list2[pos] == i:
        same_data.append(i)
same_data = list(set(same_data))#利用set的唯一性去除重复项
print(same_data)

二等分 のために発注 ソートされた配列モジュールと挿入操作を。

含む方法:

     二分bisect_left bisect_right insort insort_left insort_right

     どの二分insortがinsort_rightと呼ばれ、bisect_rightと呼ばれています

 

bisect_left(X、LO = 0、HI =なし)

-オブジェクトは、その値を挿入することなく、位置および背面を挿入する見つけることです。xは場合  に存在している左の見返りに位置x

import bisect

li = [1, 23, 45, 12, 23, 42, 54, 123, 14, 52, 3]
li.sort()
print(li)
print(bisect.bisect_left(li, 3))


result:
[1, 3, 12, 14, 23, 23, 42, 45, 52, 54, 123]
1

insort_left(X、LO = 0、HI =なし)

- リスト中の要素xを挿入し、ソートをソートして保持します。xがすでにある場合は、左とxの右に挿入します。

import bisect

li = [1, 23, 45, 12, 23, 42, 54, 123, 14, 52, 3]
li.sort()
print(li)
bisect.insort_left(li, 3.0)
print(li)

result:

[1, 3, 12, 14, 23, 23, 42, 45, 52, 54, 123]
[1, 3.0, 3, 12, 14, 23, 23, 42, 45, 52, 54, 123]

 

公開された89元の記事 ウォン称賛17 ビュー40000 +

おすすめ

転載: blog.csdn.net/lbt_dvshare/article/details/88597292