[英]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.