在尽量保证性能的情况下
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
既存のファイルの前にコンテンツを挿入する場合、パフォーマンスはそれほど問題になりません。 とにかくこのファイルの内容を再度読み書きする必要があるため、これはファイルシステムのロジックによって決まります。
file.seek(0) これは 0 に設定されたオフセットであり、最初の部分です。 file.tell() を使用して確認できます。 2つのWebページを参照できます。 https://docs.python.org/2/tutorial/inputoutput.htmlhttp://www.tutorialspoint.com/python/file_seek.htm
seek(0) は必要ありません
r+ モデルのファイル ポインタはファイルの先頭にあります。
r+
また、ファイルのコンテンツをトラバースする必要があります
この問題について 2 つのポイントに分けて説明します:
効率的にファイルの先頭または途中にコンテンツを挿入する方法とは、時間の短縮 (速度の向上) とリソースの使用率を指します。
この問題を処理するのに十分な Python コードを記述する方法
最初に私の結論を言わせてください (他に意見がある場合は、議論を歓迎します。おそらく私が間違っているかもしれません):
それはできません
あまりにも書き方が悪くないか、読みづらすぎない限り、平凡または長いコードでも問題ないと思います (あるいはそれ以上の場合もあります)
偉大な神の言葉を引用して証明してください:
Python は多くのことを簡単にし、多くの一般的な操作のためのライブラリとラッパーを含んでいますが、目的は基本的な真実を隠すことではありません。 ここで遭遇する基本的な真実は、一般に、構造全体を書き直さない限り、既存のフラット構造にデータを追加することはできないということです。これは、言語に関係なく当てはまります。 ファイルハンドルを保存したり、コードを読みにくくしたりする方法はあります。その多くは他の回答で提供されていますが、基本的な操作は変わりません。既存のファイルを読み込んでから、先頭に追加するデータを書き出す必要があります。 、その後に読み込んだ既存のデータが続きます。 ファイルハンドルは必ず保存してください。ただし、この操作をできるだけ少ないコード行にまとめようとしないでください。実際、コードの行数をできるだけ少なくしようとしないでください。これはプログラミングではなく難読化です。 投稿者 ニコラス・ナイト
Python は多くのことを簡単にし、多くの一般的な操作のためのライブラリとラッパーを含んでいますが、目的は基本的な真実を隠すことではありません。
ここで遭遇する基本的な真実は、一般に、構造全体を書き直さない限り、既存のフラット構造にデータを追加することはできないということです。これは、言語に関係なく当てはまります。
ファイルハンドルを保存したり、コードを読みにくくしたりする方法はあります。その多くは他の回答で提供されていますが、基本的な操作は変わりません。既存のファイルを読み込んでから、先頭に追加するデータを書き出す必要があります。 、その後に読み込んだ既存のデータが続きます。
ファイルハンドルは必ず保存してください。ただし、この操作をできるだけ少ないコード行にまとめようとしないでください。実際、コードの行数をできるだけ少なくしようとしないでください。これはプログラミングではなく難読化です。
投稿者 ニコラス・ナイト
参考:
Python で既存のファイルに行を追加します
私が回答した質問: Python-QA
コンテンツを先頭に直接挿入する方法はなく、ファイルを一度読み取る必要があります。 私は以前にこの問題について考えたことがあり、その時私は Python プロジェクトを逆コンパイルしており、各 Python ファイルの先頭に次の内容を挿入する必要がありました。 リーリー
そこで、私は最終的に最も単純かつ最も暴力的な方法を使用しました。 を使用してすべての Python ファイルを走査し、先頭の内容を新しいファイルに書き込み、次に元のファイルの内容を読み取って書き込みます。新しいファイルに名前を変更すると、新しいファイルの名前が元のファイル名に変更されます。 osd.walk非常に激しいですが、ファイルがそれほど大きくないためか、実際には非常に高速であることが後でわかりました。 ^_^
osd.walk
既存のファイルの前にコンテンツを挿入する場合、パフォーマンスはそれほど問題になりません。
とにかくこのファイルの内容を再度読み書きする必要があるため、これはファイルシステムのロジックによって決まります。
file.seek(0) これは 0 に設定されたオフセットであり、最初の部分です。
file.tell() を使用して確認できます。
2つのWebページを参照できます。
https://docs.python.org/2/tutorial/inputoutput.html
http://www.tutorialspoint.com/python/file_seek.htm
seek(0) は必要ありません
r+
モデルのファイル ポインタはファイルの先頭にあります。また、ファイルのコンテンツをトラバースする必要があります
この問題について 2 つのポイントに分けて説明します:
効率的にファイルの先頭または途中にコンテンツを挿入する方法とは、時間の短縮 (速度の向上) とリソースの使用率を指します。
この問題を処理するのに十分な Python コードを記述する方法
最初に私の結論を言わせてください (他に意見がある場合は、議論を歓迎します。おそらく私が間違っているかもしれません):
それはできません
あまりにも書き方が悪くないか、読みづらすぎない限り、平凡または長いコードでも問題ないと思います (あるいはそれ以上の場合もあります)
偉大な神の言葉を引用して証明してください:
参考:
Python で既存のファイルに行を追加します
私が回答した質問: Python-QA
コンテンツを先頭に直接挿入する方法はなく、ファイルを一度読み取る必要があります。
私も当時ネットで方法を探して色々試しましたがダメでした。私は以前にこの問題について考えたことがあり、その時私は Python プロジェクトを逆コンパイルしており、各 Python ファイルの先頭に次の内容を挿入する必要がありました。 リーリー
そこで、私は最終的に最も単純かつ最も暴力的な方法を使用しました。
を使用してすべての Python ファイルを走査し、先頭の内容を新しいファイルに書き込み、次に元のファイルの内容を読み取って書き込みます。新しいファイルに名前を変更すると、新しいファイルの名前が元のファイル名に変更されます。
osd.walk
非常に激しいですが、ファイルがそれほど大きくないためか、実際には非常に高速であることが後でわかりました。 ^_^