Pythonで複数の入力ストリームからの行を反復処理します
Pythonの組み込みのopen() 関数は、1つのファイルを読み取り/書き込みモードで開き、そのファイルに対する読み取り/書き込み操作を行います。バッチで複数のファイルの処理を実行するには、 fileinputを使用する必要があります Pythonの標準ライブラリのモジュール。このモジュールは、ファイルを反復処理する機能を備えたFileinputクラスを提供します。このモジュールでは、同じ目的のヘルパー関数も定義されています。
このモジュールへの主要なインターフェースはinput() 働き。この関数は、Fileinputクラスのインスタンスを返します。
fileinput.input(files, inplace, mode)
filesパラメーターは、1つずつ読み取る1つ以上のファイルの名前です。各ファイルはジェネレーターとして機能し、forループを使用して繰り返すことができます。ファイルの各行はPythonコンソールに出力されます。
>>> for line in fileinput.input('data.txt'): print (line)
filesパラメーターは、多数のファイルで構成されるタプルにすることができます。ファイルの内容が1つずつ表示されます。
>>> for line in fileinput.input(files=('a.txt', 'b.txt')): print (line)
Fileinputクラスは、withステートメントでコンテキストマネージャーとして使用することもできます。
>>> with fileinput.input(files=('a.txt', 'b.txt')) as f: for line in f: print (line)
fileinputモジュールには、次の関数が定義されています。
Sr.No。 | |
---|---|
1 | filename() 現在読み取られているファイルの名前を返します。 |
2 | fileno() ファイル記述子の整数を返します。 |
3 | lineno() 読み取られるファイルの行番号を返します。数は累積カウントです。 |
4 | filelineno() 現在のファイルの行番号のみを返します。 |
5 | isfirstline() 現在のファイルの最初の行が読み取られている場合はtrueを返し、それ以外の場合はfalseを返します。 |
次のステートメントは、ファイル内の各行を行番号とともに出力します
>>> for line in fileinput.input('books.py'): print ('{}->{}'.format(fileinput.filelineno(), line))
上記のコードの出力例は
です。1->import sqlite3 2->conn = sqlite3.connect('c:/python36/books.db') 3->cursor = conn.cursor() 4->cursor.execute("SELECT * from books;") 5->print(cursor.fetchall())
次のコードは、フォルダ内の各ファイル名に続いて番号付きの行を出力します。このプログラムでは、glob()関数を使用して、現在のパスにあるファイルのリストを、オプションで一致するワイルドカードとともに返します。ここで、glob(‘*。py’)は、現在のフォルダ内の.py拡張子を持つすべてのファイルのリストを返します。このリストは、fileinput.input()関数のファイルパラメータとして使用されます。
import fileinput, glob, sys for line in fileinput.input(glob.glob("*.py")): if fileinput.isfirstline(): print (fileinput.filename(),'>') sys.stdout.write ("{}.{}".format(fileinput.filelineno(),line))
isfirstline()関数の使用に注意してください。新しいファイルの反復が開始されると、この関数はtrueを返し、fileinput.filename()関数によって返されたファイル名が最初に出力され、次に番号付きの行が表示されます。例
1.py > 1.a = 10 2.b = 20 3.print ('addition=',a+b) hello.py > 1.x = 10 2.y = 20 3.z = x+y 4.print ("x+y=",z)
インプレースパラメータ
デフォルトでは、fileinput.input()関数のinplace=Falseです。 Trueに設定すると、入力ファイルが書き込み可能になります。
次のテキストを含む「msg.txt」があると仮定します。
Hello Python. Good morning
次のコードは、fileinputモジュールを使用してファイルを開き、その内容を適切に変更します。
>>> for line in fileinput.input(files='msg.txt',inplace = True): line = line.replace('morning', 'evening') sys.stdout.write(line)
「msg.txt」には、行われた変更が表示されます。
-
PythonPandas-DataFrameから複数の行を選択する方法
DataFrameから複数の行を選択するには、:演算子を使用して範囲を設定します。最初に、エイリアス-を使用してrequirepandasライブラリをインポートします import pandas as pd 次に、新しいPandasDataFrameを作成します- dataFrame = pd.DataFrame([[10, 15], [20, 25], [30, 35], [40, 45]],index=['w', 'x', 'y', 'z'],columns=['a', 'b']) :演算子
-
Python tkinterキャンバスから行を削除するにはどうすればよいですか?
Canvasウィジェットには、GUIアプリケーション開発における多くのユースケースがあります。 Canvasウィジェットを使用して、図形を描画したり、グラフィックや画像などを作成したりできます。 Canvasで線を引くには、 create_line(x、y、x1、y1、** options ) 方法。 Tkinterでは、単純な線と破線の2種類の線を描くことができます。 作成した行をアプリケーションで削除する場合は、 delete()を使用できます。 メソッド。 例 Canvasウィジェットで定義された行を削除する例を見てみましょう。 # Import the required libr