Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでLINECACHEを使用してテキストファイルを読み取る方法


解決策..

linecacheモジュールは、ファイルの内容を個別の行に解析されてメモリに保持するキャッシュを実装します。 linecacheモジュールは、リストにインデックスを付けることで行を返し、ファイルを繰り返し読み取り、行を解析して目的の行を見つける時間を節約します。

lincecacheモジュールは、同じファイルから複数の行を検索する場合に非常に便利です。

テストデータを準備します。このテキストは、Googleを使用してサンプルテキストを検索するだけで取得できます。

私は正直に言うと非常に賢く、理由は正確であり、これら2つのことはWebサイトを使用することで恩恵を受けるでしょう。エピクロスが2つのことを発見するために、彼はこれらの新しい眼鏡を笑いました。彼はより良い海に生まれたくありませんでした。彼に説明されるのを待ってください。いいえ、それは私が海に行くことを決して思いとどまらせませんでした、それはこのウェブサイトにありました、そしてそれはそうでした。彼に問題を解決すると、反対側の危険性がわかります。

彼はエレガントな方法でそうし続けました。簡単に外せる心配はありません、それはRVingの美しさでしょう。それはメナンダーの努力だったので、それは野蛮なティーンエイジャーから、または別の議論からのように思われるでしょう。 zrilの2つの感覚、私がそれらを見ることができるとき、私はどんな力にも同意します。

あなたがポジドンを書くたびに、それに反対しないで、世界でそれをチェックしてください。デモクリトスは通常、暴力であなたを怒らせます。それが裏庭で機能するかどうか、そしてあなたが同意しないか検討するものは何でも。しかし、投稿を読みたい場合は、主流の候補者から海を批判し、蜂蜜に無防備な哲学を置かないでください。ポリシーは使用しないでください。

また、都会性も思い浮かばなかったので、私の意見では、月に1つもありませんでした。それらの2つは彼を助けることができませんでした。あなたが木、蜂蜜に運ばれていると聞くのはあなた次第です、そしてあなたは引き離されたくありませんでした。私はただいい人である必要はありません、それは正確なテストのために可能です。私自身の質問をさせてください。

それでも、あなたがするどんな力も両立しません。ギリシャ人のために彼女の目的を達成するため。あなたが似たようなことを恐れているなら、あなたはいつか世界にいるのです。私の著作は、それについての私の最初の話からEUに至るまで、法廷での繊細な暴力の過多に至るまで、少なくともその1つではありません。そして、言葉の意味は何ですか?

import os
import tempfile

text = """
Lorem ipsum dolor sit amet, causae apeirian ea his, duo cu congue prodesset. Ut epicuri invenire duo, novum ridens eu has, in natum meliore noluisse sea. Has ei stet explicari. No nam eirmod deterruisset, nusquam electram rationibus ad sea, interesset delicatissimi et sit. Purto molestiae cu eum, in per hinc periculis intellegam.

Id porro facete cum. No est veritus detraxit facilisis, sit ea clita decore essent. Ut eam labores fuisset menandri, ex sit brute viderer eleifend, altera argumentum vel ex. Duo at zril sensibus, eu vim ullum assentior, quando possit at his.

Te nam tempor posidonium scripserit, eam mundi reprimique dissentias ne. Vim te soleat offendit democritum. Nam an diam elaboraret, quaeque dissentias an has. Autem legendos dignissim ad vis, sea ex amet petentium reprehendunt, inermis constituam philosophia ne mel. Esse noster lobortis usu ne.

Nec reque postea urbanitas ut, mea in nulla invidunt ocurreret. Ei duo iuvaret numquam. Ferri nemore audire te est, mel et detracto noluisse. Nec eu habeo justo, id pro posse apeirian volutpat. Mea sonet quaestio ne.

Atqui quaeque alienum te vim. Graeco aliquip liberavisse pro ut. Te similique reformidans usu, te mundi aliquando ius. Meis scripta minimum quo no, meis prima fabellas eu eam, laoreet delicata forensibus ut vim. Et quo vocibus mediocritatem, atqui summo an eam.

"""

1.一時ファイルを作成し、使用後に削除する関数を作成します。

def make_tempfile():
"""
Function: Create a temporary file.
mkstemp() and mkdtemp() to create temporary files and directories

args: None

return: Temp file name.
"""
fd, temp_file = tempfile.mkstemp()
os.close(fd)

with open(temp_file, 'wt') as f:
f.write(text)

return temp_file

def cleanup(temp_file):
os.unlink(temp_file)

3.linecacheを使用して特定の行を読み取ります。 linecacheモジュールによって読み取られるファイルの行番号は1から始まります。これは、配列のインデックス作成を0から開始するリストとは異なります。これは覚えておくべき重要なポイントです。

import os
import tempfile
import linecache

text = """
Lorem ipsum dolor sit amet, causae apeirian ea his, duo cu congue prodesset. Ut epicuri invenire duo, novum ridens eu has, in natum meliore noluisse sea. Has ei stet explicari. No nam eirmod deterruisset, nusquam electram rationibus ad sea, interesset delicatissimi et sit. Purto molestiae cu eum, in per hinc periculis intellegam.

Id porro facete cum. No est veritus detraxit facilisis, sit ea clita decore essent. Ut eam labores fuisset menandri, ex sit brute viderer eleifend, altera argumentum vel ex. Duo at zril sensibus, eu vim ullum assentior, quando possit at his.

Te nam tempor posidonium scripserit, eam mundi reprimique dissentias ne. Vim te soleat offendit democritum. Nam an diam elaboraret, quaeque dissentias an has. Autem legendos dignissim ad vis, sea ex amet petentium reprehendunt, inermis constituam philosophia ne mel. Esse noster lobortis usu ne.

Nec reque postea urbanitas ut, mea in nulla invidunt ocurreret. Ei duo iuvaret numquam. Ferri nemore audire te est, mel et detracto noluisse. Nec eu habeo justo, id pro posse apeirian volutpat. Mea sonet quaestio ne.

Atqui quaeque alienum te vim. Graeco aliquip liberavisse pro ut. Te similique reformidans usu, te mundi aliquando ius. Meis scripta minimum quo no, meis prima fabellas eu eam, laoreet delicata forensibus ut vim. Et quo vocibus mediocritatem, atqui summo an eam.
"""

def make_tempfile():
"""
Function: Create a temporary file.
mkstemp() and mkdtemp() to create temporary files and directories

args: None

return: Temp file name.
"""
directory = os.getcwd()
fd, temp_file = tempfile.mkstemp(dir=directory)
os.close(fd)

with open(temp_file, 'wt') as f:
f.write(text)

return temp_file

def cleanup(temp_file):
os.unlink(temp_file)

# Make a file with ipsum data.
filename = make_tempfile()
print(f"Output \n {filename}")

split_line = '\n'

# Pick the lines from source.

print(f"*** Displaying first 5 lines directly from the source \n {text.split(split_line)[4]}" )

# pick out the same line from cache
print(f" \n *** Displaying first 5 lines from the cache \n {linecache.getline(filename, 5)}" )

# cleanup the tempfile by using unlink
cleanup(filename)
を使用して一時ファイルをクリーンアップします

出力

C:\Users\sasan\PycharmProjects\blog\TutorialPoints\Updated_Code\tmpazax_yne
*** Displaying first 5 lines directly from the source
Id porro facete cum. No est veritus detraxit facilisis, sit ea clita decore essent. Ut eam labores fuisset menandri, ex sit brute viderer eleifend, altera argumentum vel ex. Duo at zril sensibus, eu vim ullum assentior, quando possit at his.

*** Displaying first 5 lines from the cache
Id porro facete cum. No est veritus detraxit facilisis, sit ea clita decore essent. Ut eam labores fuisset menandri, ex sit brute viderer eleifend, altera argumentum vel ex. Duo at zril sensibus, eu vim ullum assentior, quando possit at his.

4.Linecacheには、常に行末に改行が含まれます。したがって、行が空の場合、戻り値は改行だけです。

以下を参照してください。

import linecache

# Make a file with ipsum data.
filename = make_tempfile()
print(f"Output \n {filename}")

# Blank lines include the newline.

print(f"\n *** The number of lines in the text is 13." )
print(" \n *** Displaying the lastline from Linecache which should be a new line\n {!r}".format(linecache.getline(filename, 8)) )

cleanup(filename)

出力

C:\Users\sasan\PycharmProjects\blog\TutorialPoints\Updated_Code\tmp352zirvn

*** The number of lines in the text is 13.

*** Displaying the lastline from Linecache which should be a new line
'\n'

5.結論- アプリケーションがファイルにランダムアクセスする必要がある場合、linecacheを使用すると、行番号で行を簡単に読み取ることができます。ファイルの内容はキャッシュに保持されるため、メモリの消費に注意してください。


  1. Pythonを使用してPDFファイルをExcelファイルに変換する方法は?

    Pythonには、さまざまなタイプの操作を処理するためのライブラリの大規模なセットがあります。この記事では、PDFファイルをExcelファイルに変換する方法を説明します。 pdfをCSVに変換するためにPythonで利用できるさまざまなパッケージがありますが、Tabula-pyモジュールを使用します。 tabula-pyの大部分はJavaで記述されており、PDFドキュメントを読み取り、PythonDataFrameをJSONオブジェクトに変換します。 tabula-pyを使用するには、システムにJavaがプリインストールされている必要があります。ここで、PDFファイルをcsvに変換するには、

  2. Pythonを使用してパワーポイントファイルを作成する方法

    はじめに 私たちは皆、人生のある時点でPowerPointプレゼンテーションを作成する必要がありました。ほとんどの場合、MicrosoftのPowerPointまたはGoogleスライドを使用しました。 しかし、メンバーシップやインターネットへのアクセスがない場合はどうなりますか?または、「プログラマー」のやり方でやりたいと思ったらどうしますか? ええと、Pythonが戻ってきても心配しないでください! この記事では、Pythonを使用してPowerPointファイルを作成し、それにコンテンツを追加する方法を学習します。それでは始めましょう! はじめに このウォークスルーでは、 py