1

无论我尝试什么,“i”始终保持为“1”。每次转到文件夹中包含“1Chr”的下一个文件时,我都在尝试将“1”添加到“i”。

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为一个,因此它不能超过 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为。移动声明/初始化,使其位于循环之前: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 回答
1

放在循环i=1之外。for您正在将其重置为1每次循环。

于 2012-08-10T15:46:12.380 回答