目的:カウントが実際の行数より大きい場合、except
ブロック:ユーザに通知してEnterを押します。 count
をファイル内の行の総数と等しく設定し、ループを再試行してください。例外処理中に奇妙なネストされたループ動作
count = 10000
with open('mobydick_ch1.txt') as f:
while 1:
lines = []
try:
for i in range(count):
lines.append(next(f)) # iterate through file and append each line in range
break
except StopIteration:
if not input("File does not contain that many lines, press enter to continue printing maximum lines:"):
for i, k in enumerate(f, 1):
count = i
f.close() # close file
# format output. enumerate lines, start at 1
# http://stackoverflow.com/questions/4440516/in-python-is-there-an-elegant-
# way-to-print-a-list-in-a-custom-format-without-ex
print(''.join('Line {0}: {1}'.format(*k) for k in enumerate(lines, 1)))
私は現在取得しています:私はEnterキーを押しますたびに
:
ファイルは、多くのライン、プレスが最大の行を印刷し続けるために入力することが含まれていません。この不要な動作の原因は何ですか?
'f.close()'は完全に冗長です。あなたはすでにファイルをコンテキストマネージャとして使っています( 'with ...') –
このヒントをありがとう! –
そのための目的は何ですか?enumerate(f、1):count = i'とにかくループしますか? 10000未満の場合、ファイル内の実際の行数に 'count'を設定しようとしていますか? –