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

これらは同じブロックにあり、2 番目のステートメントも if ステートメントの "then" 句に属していることを Python に伝えます。

于 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 に答える