打印线搜索的输出

时间:2013-05-24 16:14:32

标签: python

我是一般的编程新手,我很难尝试使用此命令将其输出打印到.txt文档。我的目标最终是能够为一个变量更改术语“序列”,我可以将它集成到一个自定义的easygui中,用于多个输入和返回,但这是一个故事,以后的路上。为了测试和完成当前项目,我将手动改变术语。

我已经成功地获得了另一个程序将其输出发送到.txt,但这个很难。我不知道我是不是已经看过一些简单的东西,但是我已经停留了比我想要的更多的时间。

当它搜索行时,它会打印我想要的文件中的字段,但是当它写入时,它会找到文件的最后一行,然后将其作为输出放在.txt中。我知道这个问题,但是我无法解决这个问题,主要是因为我对我认为的语言缺乏了解。

我在Windows上使用Sublime Text 2

def main():
    import os

    filelist = list()

    filed = open('out.txt', 'w')
    searchfile = open("asdf.csv")

    for lines in searchfile:
        if "Sequence" in lines:
         print lines

    filelist.append(lines)

    TheString = " ".join(filelist)

    searchfile.close()

    filed.write(TheString)

    filed.close()

main()

3 个答案:

答案 0 :(得分:2)

听起来你想要在变量“filelist”中收集打印出的行,然后在.write()调用中将其打印到文件中。只有缩进的差异(在Python中很重要)才能防止这种情况发生:

def main():
    import os

    filelist = list()

    filed = open('out.txt', 'w')
    searchfile = open("asdf.csv")

    for lines in searchfile:
        if "Sequence" in lines:
           print lines
           filelist.append(lines)

    TheString = " ".join(filelist)

    searchfile.close()

    filed.write(TheString)

    filed.close()

main()

具有

           filelist.append(lines)

处于相同的缩进级别
           print lines

告诉Python它们在同一个块中,并且第二个语句也属于if语句的“then”子句。

答案 1 :(得分:2)

你的问题是你没有附加在循环中,因此你只是追加最后一行,这样做:

for lines in searchfile:
    if "Sequence" in lines:
       print lines
       filelist.append(lines)

BONUS :这是“ pythonic ”方式,可以满足您的需求:

def main():
    with open('asdf.csv', 'r') as src, open('out.txt', 'w') as dest:
        dest.writelines(line for line in src if 'sequence' in line)

答案 2 :(得分:1)

def main():

    seq = "Sequence"

    record = file("out.txt", "w")
    search = file("in.csv", "r")

    output = list()

    for line in search:
        if seq in line: output.append(line)

    search.close()

    record.write(" ".join(output))
    record.close()