1

何をしようとしても、「i」は常に「1」のままです。フォルダ内の「1Chr」を含む次のファイルに移動するたびに、「i」に「1」を追加しようとしています。

Python

for name in glob.glob('*.html'):
  i = 1
  with open(name) as k:
    content = k.read()
    if '1Chr.'+str(i)+'.' in name:
      book = name.split('.')[0].upper().rstrip()
      x=open('final/'+book+'.SFM', 'a')
      x.write(content)
      i += 1
      x.close()    
4

4 に答える 4

6

i = 1上記をforループに配置します。
新しいファイルごとiに1つにリセットされるため、2を超えることはできません。

于 2012-08-10T15:45:33.363 に答える
4

i=1上記のforループを配置します。

i = 1
for name in glob.glob('*.html'):
  with open(name) as k:
    content = k.read()
    if '1Chr.'+str(i)+'.' in name:
      book = name.split('.')[0].upper().rstrip()
      x=open('final/'+book+'.SFM', 'a')
      x.write(content)
      i += 1
      x.close()

またはより適切に使用するとenumerate()enumerate()自動的にインクリメントされますi

for i,name in enumerate(glob.glob('*.html'),1):
于 2012-08-10T15:46:47.160 に答える
1

ループi=1の外側に置きます。ループを通過するたびにforリセットします。1

于 2012-08-10T15:46:12.380 に答える
1

ループを繰り返すたびににリセットiします。の宣言/初期化を移動して、ループの前に配置します。1fori

i = 1
for name in glob.glob('*.html'):
  with open(name) as k:
    content = k.read()
    if '1Chr.'+str(i)+'.' in name:
      book = name.split('.')[0].upper().rstrip()
      x=open('final/'+book+'.SFM', 'a')
      x.write(content)
      i += 1
      x.close() 
于 2012-08-10T15:47:55.537 に答える