繁体   English   中英

打印行搜索的输出

[英]Printing the output of a Line search

一般而言,我是编程新手,尝试获取此命令以将其输出打印到.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()

听起来好像您希望将要打印的行收集在变量“文件列表”中,然后将在.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”子句。

您的问题是您没有在循环内追加,结果是您仅追加了最后一行,请执行以下操作:

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

奖励 :这是您执行所需操作的“ 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)
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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM