Python(有时)缺少换行符

时间:2014-11-25 18:49:43

标签: python io newline

问题:我遇到一个问题,我似乎在Python脚本生成的文件中缺少换行符。该脚本只是迭代预定义的原子组,并创建与每个组对应的原子列表并打印它们。

当我在我的机器上运行脚本时,它似乎做得很好。但是,我的一些同事尝试运行该脚本,最终在代码中缺少换行符。我无法复制错误,但怀疑它可能与他们使用的机器上的高I / O负载有关。

问题: Python I / O中缺少字符是否存在问题?有没有更好的方法来编写这些文件(例如写入缓冲区或其他东西)?它们的长度可以是> 100k。

代码

 with open(filename, "w") as output:
     for param in params.keys():
         for residue in molecule.residues.nodes():
             if residue.name == param[0]:
                 rotated_atoms = get_rotated_atoms((residue, param[1]))
                 # Create an identifiable group name
                 group_name = "_".join((str(residue.index), 
                                        residue.name.strip(), 
                                        rotated_atoms[0].name.strip(),
                                        rotated_atoms[1].name.strip()))
                 output.write(" ".join(("GROUP", 
                                        group_name,
                                        str(rotated_atoms[0].index + 1),
                                        str(rotated_atoms[1].index + 1),
                                        str(len(rotated_atoms[2])),
                                        str(params[param][0]),
                                        str(params[param][1]),
                                        "\n")))

                 for atom in rotated_atoms[2]:
                     # Problem arises here, mostly prints newlines, occasionally doesn't
                     output.write(str(atom.index + 1) + "\n")
                 output.write("\n")

示例工作输出:

GROUP 252_LEU_CA_C 4062 4077 150 0.1 0.5
4080
4097
4107
4127
4146
4161
4173
4194
4214
4082
4099
4109
4129
4148
...
4163

示例损坏输出:

GROUP 252_LEU_CA_C 4062 4077 150 0.1 0.5
4080
4097
4107
4127
4146
4161
4173
4194
4214
40824099 <-- Missing newline
4109
4129
4148
...
4163

0 个答案:

没有答案