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

Python提取文件指定行区间内容输出为空的问题排查

代码存在的问题
  • 变量名拼写错误:定义输出文件句柄时使用的变量名是ouput,后续执行写入操作时调用的是output,变量名不匹配,即使有符合条件的内容也无法正常写入。
  • 起始行匹配规则错误:你需要匹配以Atom开头的行,原代码判断line.strip() == "(Angstrom)",但对应行去除首尾空白后的完整内容是Atom labels, atom number, coords (Angstrom),该判断永远不成立,收集内容的标识copy始终为False,不会收集任何目标内容。
  • 结束行匹配规则错误:结束行去除首尾空白后的内容是Overall charge,原代码判断等于Overall,匹配条件不成立,即使前面收集到了内容也不会触发写入逻辑。
  • 未正确关闭文件:代码没有显式关闭文件句柄,可能导致缓冲区内容未被刷新到磁盘,最终输出文件为空。
修正后可正常运行的代码
# 使用with上下文管理器自动处理文件关闭,避免资源泄漏
with open('h2_sample.input', 'r') as infile, open('coordinate.txt', 'w') as output:
    copy_flag = False
    for line in infile:
        stripped_line = line.strip()
        # 匹配起始行:以Atom开头
        if stripped_line.startswith('Atom'):
            copy_flag = True
            continue
        # 匹配结束行:以Overall开头
        elif stripped_line.startswith('Overall'):
            copy_flag = False
            break
        # 介于两行之间的内容直接写入输出文件,保留原行格式
        elif copy_flag:
            output.write(line)

内容的提问来源于stack exchange,提问作者Abd-Elazeem Mohamed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:06:00