我是一般的编程新手,我很难尝试使用此命令将其输出打印到.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()
答案 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()