打印行搜索的输出

2024-04-20 03:26:36 发布

您现在位置: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()

Tags: 文件in文档命令txtclosemain编程
3条回答
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()

您的问题是没有在循环内追加,因此只追加最后一行,请执行以下操作:

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)

听起来像是希望将要打印出来的行收集到变量“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”子句。你知道吗

相关问题 更多 >