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