Python:将输出写入文本文件,但文本文件不包含整个字符串并随机截断?

Python:将输出写入文本文件,但文本文件不包含整个字符串并随机截断?,python,xml,text,sbml,Python,Xml,Text,Sbml,我正在使用Python解析xls文件,然后将该信息转换为(XML版本) 这是一个相当长的文件(>3000行),当我打开.xml时,字符串被随机截断约1400或3000行。但是,当我键入时:print d.toSBML() 并将此字符串打印到控制台,该字符串不会被截断,我可以看到已解析字符串的结尾 这里有什么问题 Edit:为了进一步剖析这个问题,我用outfile2.close()关闭了代码,并尝试在脚本中打印s和打印到控制台。这将返回截断的s和d字符串。但是,当我分别在解释器中键入确切的命令时

我正在使用Python解析xls文件,然后将该信息转换为(XML版本)

这是一个相当长的文件(>3000行),当我打开.xml时,字符串被随机截断约1400或3000行。但是,当我键入时:
print d.toSBML()
并将此字符串打印到控制台,该字符串不会被截断,我可以看到已解析字符串的结尾

这里有什么问题

Edit:为了进一步剖析这个问题,我用outfile2.close()关闭了代码,并尝试在脚本中打印s和打印到控制台。这将返回截断的
s
d
字符串。但是,当我分别在解释器中键入确切的命令时,两个命令都正确打印。有人知道这种差异是怎么回事吗?

试试这个:

from mod2sbml import Parser    
p = Parser()    

with open('sbmlconvert.xml', 'w') as of:   
    s = open('sbmltest3.mod', 'r').read()    
    d = p.parse(s)
    of.write(d.toSBML())    

你忘了关闭文件。虽然这可能不是原因,但你真的应该这样做。此外,您可以使用
outfile2.write(d.toSBML())
而不是使用
print
。为什么您认为
s
会被截断,特别是当
d
似乎包含其全部内容时?此外,如果处理文件中的文本信息,您应该使用“rt”和“wt”作为文件模式。(如果文件不是文本,则为“rb”和“wb”)@jsbueno:
打开
默认为文本模式,因此
“r”
“w”
将为文本模式,
“rb”
“wb”
将为二进制模式@Kirk Strauser:@ThiefMaster的意思是应该关闭
outfile2
。@Kirk Strauser如果我在脚本中打印s和d,它们似乎都被截断了,但当我在解释器中键入命令时,它们就被截断了。同样的问题。问题实际上似乎是read()函数。s显示为截断。
of.close()
不是必需的,因为您使用的是
with
语句。
from mod2sbml import Parser    
p = Parser()    

with open('sbmlconvert.xml', 'w') as of:   
    s = open('sbmltest3.mod', 'r').read()    
    d = p.parse(s)
    of.write(d.toSBML())