0

一般来说,我对编程很陌生,我很难尝试让这个命令将它的输出打印到 .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()
4

3 回答 3

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”子句。

于 2013-05-24T16:21:14.703 回答
2

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

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)
于 2013-05-24T16:21:17.060 回答
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()
于 2013-05-24T16:27:40.910 回答