私はPythonには初めてですが、私はこの問題に対して明確な答えを見なければなりません。大きなテキストファイルを1MB未満(1〜2バイト文字の場合は500000文字)の小塊に分割する必要がありますが、これをやりなおすことなく最も近い改行で分割する必要があります。ファイルサイズを決定するための明確な方法はありませんので、文字制限が(完璧ではないが、ほとんどの文字は1バイト、この安全であるという仮定に基づいて)に達した前に、私はラインを見つけることpython - ファイルを最大行数で複数のtxtファイルに分割し、文字数に基づいて最大ファイルサイズを超えないようにする
chars = words = lines = 0
with open('rawfile.txt', 'r') as in_file:
for line in in_file:
while chars < 500000:
lines += 1
words += len(line.split())
chars += len(line)
#print lines, words, chars
linebreak = lines -1
print linebreak
chars = words = lines = 0
を次のアプローチを取りました
これは、文字数が500000文字の制限を超える前の行を返します。
私は、次の操作を行うのに苦労しています:ラインlinebreak
から再び新しいファイル
スタート機能にend_line
に任意の提案をstart_line
保存linebreak
へ
が0からstart_line
を設定し、end_lineを?より良い方法にもオープン。
ありがとうございました!しかし、私はこれをボックスの外で動作させることができませんでした。 newfileに読み込み権限しかないので、書き込み権限を与えるためにw/w +に更新しました。また、両方のファイルはin_fileを使用しているので、outfileとしてopen(newfile、 'w')を使用し、infileとしてopen(oldfile、 'r'、encoding = 'utf-8')というコードを実装しています。これ以上のことでプレイしますが、私を正しい軌道に乗せてくれてありがとう! – mcraniseq
これは機能しました!上記のスクリプトを追加しましたが、コードは1つのファイルしか作成しませんでした。コードを読み返した後、私はfmunが0に戻ってきたことに気付きました。それが削除されると、それは魅力のように働きました、ありがとう! '#updated first lin to: out_fileとしてopen( 'newfile_' + str(fnum)+ '.txt'、 'w +')をopen( 'rawfile.txt'、 'r')として開きます。 #fnumを0にリセットして削除しました: chars = words = lines = 0 – mcraniseq
すみません!はい、リセットされたfnumは私の "ボランティア"の日の最後に私のパートコピーペーストで間違いです。これはうまくいった。 – Prune