1

値が区切られた4つの列を持つファイルがあります。最初の列だけが必要なので、ファイルを読み取ってからその行を分割し、分割して、first_file_list という 1 つのリスト変数に格納します。

値が区切られた6つの列を持つ別のファイルがあります。私の要件は、ファイルの最初の行の最初の列を読み取り、文字列が first_file_list というリストに存在することを確認することです。それが存在する場合は、その行を新しいファイルにコピーします。

私の最初のファイルには約があります。600 万のレコードと 2 番目のファイルには約があります。450 万件のレコード。450 万の代わりにコードのパフォーマンスを確認するために、2 番目のファイルに 100k レコードしか入れず、100k レコードのコードを処理するには約 1 時間かかります。2.5時間。

以下は、これに対する私の論理です。

first_file_list = []

with open("c:\first_file.csv") as first_f:
    next(first_f)  # Ignoring first row as it is header and I don't need that
    temp = first_f.readlines()
    for x in temp:
        first_file_list.append(x.split(',')[0])
first_f.close()

with open("c:\second_file.csv") as second_f:
    next(second_f)
    second_file_co = second_f.readlines()
second_f.close()

out_file = open("c:\output_file.csv", "a")
for x in second_file_co:
    if x.split(',')[0] in first_file_list:
        out_file.write(x)
out_file.close()

私のコードが 100,000 レコードを比較するのにこれだけの時間がかかるように、ここで何が間違っているのかを理解するのを手伝ってくれませんか? または、Python でこれを行うためのより良い方法を提案できますか。

4

2 に答える 2