問題タブ [readlines]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python readlines() の使い方と読み方の効率的な練習
フォルダー内の数千のテキスト ファイル (サイズが ~400 KB の各ファイルに約 3000 行) を解析するのに問題があります。私はreadlinesを使ってそれらを読みました、
これは、私の入力 (50,100 ファイル) からのサンプルに対して完全に正常に機能します。5,000 個を超えるファイルの入力全体を実行したところ、所要時間は直線的な増加にはほど遠いものでした。パフォーマンス分析を行う予定で、Cprofile 分析を行いました。入力が 7K ファイルに達すると、より多くのファイルにかかる時間が指数関数的に増加し、速度が低下します。
readlines の累積所要時間は次のとおりです。最初の -> 354 ファイル (入力からのサンプル) および 2 番目の -> 7473 ファイル (入力全体)
このため、私のコードにかかる時間は、入力が増加するにつれて線形にスケーリングされません。に関するいくつかのドキュメント ノートを読みましたが、これはファイル コンテンツ全体をメモリに読み込むため、またはに比べて一般的により多くのメモリを消費するとreadlines()
主張していました。readlines()
readline()
read()
私はこの点に同意しますが、ガベージコレクターはループの最後にメモリからロードされたコンテンツを自動的にクリアする必要があるため、いつでもメモリには現在処理されているファイルのコンテンツのみが含まれている必要があります。しかし、ここで落とし穴があります。誰かがこの問題についていくつかの洞察を与えることができます.
これはPythonガベージコレクターの固有の動作ですか、readlines()
それとも私の間違った解釈ですか。知ってよかった。
また、メモリと時間効率の良い方法で同じことを行ういくつかの代替方法を提案してください。ティア。
python - ディレクトリ内のすべてのファイルを CSV 用に開き、各行を読み取る Python
こんにちは、私が抱えている問題に関して助けを求めています。データが格納されているディレクトリ (以下を参照) で、特定のファイル タイプのみを検索したいと考えています。以下は私のコードですが、完全に機能していません。
現在の出力は、2 つの結果のうちの 1 つです。ファイルの最初の行だけを印刷するか、空白の結果を印刷します。
わかりましたので、これが私がやりたいことです。csv ファイルのみをリストされているディレクトリで検索したい。次に、ループを取得して各ファイルを1行ずつ読み取り、ファイルの各行を出力してから、残りのcsvファイルに対してこれを繰り返します。
以下のコードを編集して CSV ファイルのみを検索する方法と、ファイル内の各行を印刷してから、すべての CSV ファイルが見つかって開くまで次の CSV ファイルを繰り返す方法を教えてください。これは可能ですか?
ご協力いただきありがとうございます。
python - CSVファイルpythonから特定のデータをロードする
大量のデータを含む CSV ファイルを扱っています。各行には、以下に示す形式のデータが含まれます。
氏名、年齢、性別、生年月日
マーク、18、M、1978
メアリー、18、M、1980
マーカス、18歳、男性、1978年
このデータは、約 200 行にわたって繰り返されます。私が知りたいのは、このフォルダーを開いて読み取ることができるが、1978 を含む行のみを印刷する方法があることです。つまり、上記のデータでは、マークとマーカスの行のみを印刷します。
これまでの私のコードは次のとおりです。目的を達成するためにどのように編集できますか。出来ますか?
python - readlines よりも優れた方法はありますか?
Python 2.5 を使用して、HTML ファイルから 3 つの異なる情報を読み取っています。情報を見つける方法は、regex * との一致を見つけ、一致する行から特定の行数を数えて、探している実際の情報を取得することです。 問題は、サイトを 3 回 (検索している情報ごとに 1 回) 再度開く必要があることです。効率が悪いと思うので、一度だけサイトを開いて、3 つすべてを調べられるようにしたいと考えています。 誰かがより良い方法や提案を持っていますか?
* BeautifulSoup などのより良い方法を学習しますが、今のところ、簡単な修正が必要です
コード:
ありがとう、
B
うまくいく解決策を見つけました!余分な urlopen コマンドと readlines コマンドを 2 つ削除し、ループ用に 1 つだけ残しました (urlopen コマンドだけを削除して readlines を残す前に)。これが私の修正されたコードです:
python - エンドラインを認識しない「rU」で開く
SL6 で実行される Fortran プログラムによって作成されたテキスト ファイルがあります。次のようになります。
1
すべての数字をリストのリストに読み込みたいので、最初の 9 行をスキップする必要がありますが、Python は「rU」として開いているにもかかわらず、末尾の行を認識しません。テストとして、このコード:
出力 ('\n は文字列の一部として読み取られます):
BlBlockq['1\n', ' R - Z ビニング n. 1 "1 " 、一般化された粒子 n。223\n', ' R 座標: 0.0000E+00 から 1.1000E+02 cm、110 個のビン (幅 1.0000E+00 cm)\n', ' Z 座標: -2.9000E+02 から 2.9000E+02 までcm, 290 ビン (幅 2.0000E+00 cm)\n', ' 軸座標: X = 0.0000E+00, Y = 0.0000E+00 cm\n', ' データは行列 A(ir,iz) に続きます, format (1(5x,1p,10(1x,e11.4)))\n', '\n', ' 要求されたトラックに沿った正確な配置\n', ' これはトラック長ビニングです\n' , ' 3.0406E-01 2.3565E-02 1.0664E-02 7.2081E-03 5.2534E-03 4.8756E-03 4.5011E-03 4.2792E-03 4.1801E-03 3.9648E-03 \n', ' 3.9108E 03 3.8301E-03 3.7256E-03 3.6330E-03 3.5912E-03 3.5461E-03 3.4579E-03 3.
これに関するご支援をいただければ幸いです。
python - Python による解析
ファイルを解析しようとしています。現在、私はこのファイルを持っています:
と配列に格納しようとしてword1
word2
word3
おりword4
、それらの単語に隣接する数字を別の配列に格納しようとしています。
したがって、私a[0]
が取得する必要がword1
あると言ったら、取得b[0]
する必要がある52345325
と言ったら、などです。
キーと値のペアの辞書オブジェクトを作成することを考えていましたが、Python を始めたばかりなので、現時点では少し複雑かもしれません。
私は現在これを行っていますが、もちろん機能していません:P
これは正直なところ、python を使用する最初の 1 時間です。これはC++で簡単に実行できますが、現在、Pythonを学習して、C++よりも優れたメリット/シンプルさを理解しようとしています。
python - Python(numpy)が混合形式のテキストファイルを読み取る
このようなファイルが何千もあり、アトムに対応する行の列 6、7、8 の値を抽出したい ['CG'、'CD1'、'CD2'、'CE1'、'CE2'、' CZ']、
上記のアトムごとに 2 つの行が存在することに注意してください。したがって、このように、12 個のキーを持つ 2 つの辞書が私の目標に最も適していると思います。
最初のキー (1, 2) は 5 番目の列を参照します。
ファイルを読み取り、値の各タプルを辞書の正しい場所に割り当てる確実な方法を教えてください。複数のif条件でそれを行うことができますが、もっと良い方法があるに違いないと思いました(おそらくnumpyで)
python - Pythonは2行目から15行目までテキストファイルを読み取ります
テキスト ファイルがあり、2 番目の行から 15 行目までを読み取る必要があります。いくつかの方法を試しましたが、うまくいきませんでした...誰かが私を助けてくれたら嬉しいです...どうもありがとう!