You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python脚本循环读取HTML文件时文件名打印错误求助

问题分析与解决

你遇到的文件名错位问题,根源在于变量更新的顺序错误。我们拆解下你的代码逻辑就能找到问题:

  1. 初始n=1,filename是source1.html
  2. 进入循环后,你先执行了n = n+1,立刻把filename改成了source2.html
  3. 这时候你打开的还是最初的source1.html,但后续打印、写入的却是已经更新后的source2.html
  4. 以此类推,处理source2时文件名已经跳到source3,处理source3时跳到source4,最终就出现了打印的文件名比实际处理的文件多一位的情况。

修正后的代码

from bs4 import BeautifulSoup
import re
import os.path

n = 1
filename = "source"+str(n)+".html"
savefile = open('OUTPUT.csv', 'w')

while os.path.isfile(filename):
    # 先处理当前文件名对应的文件
    strjpgs = "Extracted Layers: \n \n"
    file = open(filename, "r")
    soup = BeautifulSoup(file, "html.parser")
    thedata = soup.find("div", class_="cplayer")
    strdata = str(thedata)
    DoRegEx = re.compile('/([^/]+)\.jpg')
    jpgs = DoRegEx.findall(strdata)
    strjpgs = strjpgs + "\n".join(jpgs) + "\n \n"
    
    # 写入并打印当前正在处理的文件名
    savefile.write(filename + '\n')
    savefile.write(strjpgs)
    print(filename)
    print(strjpgs)
    
    # 最后更新变量,为下一次循环做准备
    n = n+1
    filename = "source"+str(n)+".html"

savefile.close()
print("done")

关键改动说明

  • 把n和filename的更新逻辑移到了当前文件处理完成之后,这样打印和写入的都是正在处理的真实文件名,不会提前跳转到下一个。
  • 顺便修正了最后一行print "done"的语法错误(Python 3中print是函数,需要加括号),避免运行时抛出语法异常。

内容的提问来源于stack exchange,提问作者Chagger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:04:33