2014-11-13 350 views
1

我正在尝试编写一个需要字符的函数,并将所有以c结尾的文字放在ifile中,并将其放入另一个新文件中。我认为这将基于字符串索引,但文本文件结果始终为空。为什么line[0]会工作,但line[-1]不会?我不明白为什么同样的概念不适用。从Python中的文件获取字符串的最后一个字符?

def getListEnd(c,ifile,ofile): 
    for line in ifile: 
     if c in line[-1]: 
      ofile.write(str(line)) 
+1

您是否正确关闭了'ofile'? –

+0

在python中迭代文件会留下结束字符的行。你是否确信ifile是一个迭代器,可以关闭CR和LF? – brycem

+0

你是什么意思行[0]将工作,但行[-1]不会? line [-1]返回字符串的最后一个字符。 – muradin

回答

1

确保调用ofile.close()在相同的范围内,你写ofile = open('some_file.txt', 'w'),但您的来电当然getListEnd后。

所以,你有你的代码看起来像这样:

def getListEnd(c,ifile,ofile): 
    for line in ifile: 
     if c in line[-1]: 
      ofile.write(str(line)) 

infile = open('inputfile.txt', 'r') 
outfile = open('outputfile.txt', 'w') 
getListEnd('$', infile, outfile) 
outfile.close() 
infile.close() 

如果你不叫close(),您的缓冲区有可能不能正确刷新,因此您的文件将不会被写入。

相关问题