多数のファイルを圧縮するには、(クライアントからの)次の要件があります。
作成されるzipファイルが2**31-1〜2GB未満の場合は、圧縮を使用して作成し(zipfile.ZIP_DEFLATEDを使用)、それ以外の場合は圧縮しないでください(zipfile.ZIP_STOREDを使用)。
現在の解決策は、zip64を使用せずにファイルを圧縮し、zipfile.LargeZipFile例外をキャッチして、非圧縮バージョンを作成することです。
私の質問は、実際にすべてのファイルを処理せずにzipファイルがzip64サイズを超えるかどうかを(おおよそ)計算する価値があるかどうか、そしてそれをどのように実行するのが最善かということです。このような大量のデータを圧縮するプロセスは遅く、重複する圧縮処理を最小限に抑えると、少しスピードアップする可能性があります。
編集:最大および最小のファイルサイズと圧縮率の組み合わせから有用なヒューリスティックを生成できると思うので、両方のソリューションに賛成します。残念ながら、現時点では、StackOverflowにより、(noobよりも高い評判が得られるまで)何も賛成できません。良い提案をありがとう。