2017-02-05 10 views
1

私のコードは次のとおりです。私のコードに.read()を入れても機能しないのはなぜですか?次のように

input_seq = open("input.txt") 
sequences = input_seq.read() 
output = open("output.txt", "w") 

for dna in input_seq: 
    trimmed = dna[14:] 
    length = len(trimmed) 
    output.write(trimmed) 
    print("processed sequence with length " + str(length)) 

私の質問は、第二ライン「配列= input_seq.read()」に関してです。コードに含めると正しく実行されません。私はそれを削除すると、コードは完全に機能します。

なぜ、その.read()行は、すべてが正常に機能しなくなるのですか?

入力は

ATTCGATTATAAGCTCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATC 
ATTCGATTATAAGCACTGATCGATCGATCGATCGATCGATGCTATCGTCGT 
ATTCGATTATAAGCATCGATCACGATCTATCGTACGTATGCATATCGATATCGATCGTAGTC 
ATTCGATTATAAGCACTATCGATGATCTAGCTACGATCGTAGCTGTA 
ATTCGATTATAAGCACTAGCTAGTCTCGATGCATGATCAGCTTAGCTGATGATGCTATGCA 

正しい出力が

TCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATC 
ACTGATCGATCGATCGATCGATCGATGCTATCGTCGT 
ATCGATCACGATCTATCGTACGTATGCATATCGATATCGATCGTAGTC 
ACTATCGATGATCTAGCTACGATCGTAGCTGTA 
ACTAGCTAGTCTCGATGCATGATCAGCTTAGCTGATGATGCTATGCA 

基本的な目的は、私のINPUT.TXTファイル内のすべての行に共通だ最初の14個の文字を削除することであるです。

実行するとエラーメッセージは表示されませんが、実際には何も起こりません。 output.txtファイルは空白のままです。

+1

内のすべての入力ファイルを読みますか?エラーメッセージが表示されたり間違った結果が出ますか?常にQUESTIONにFULLエラーメッセージを入れてください。サンプルデータ、間違った結果、期待される結果 – furas

+0

'sequences'は何も使われていないので、行全体を削除することもできます。 –

+2

'read()'を使うと変数 'sequences'にすべてを読み込み、' input_seq'はファイルの最後にあり、何も読み込めません - 'dna in sequenceのために'を使うかもしれません: – furas

答えて

1

コメントで述べたように、sequences = input_seq.read()は、変数内のすべてのファイルの内容を読み、この文の後input_seqポイントファイルの終わり。
この2つのオプションのいずれかを使用できますが、両方を同時に使用することはできません。
まずオプション

with open('input.txt') as inp_seq, open('output.txt', 'w') as output: 
    for dna in input_seq: 
     trimmed = dna[14:] 
     output.write(trimmed) 
     print("processed sequence with length " + str(len(trimmed))) 

番目のオプション - あなたは "失敗" とは何を意味するか、変数最初

with open('input.txt') as inp_seq: 
    sequence = inp_seq.read() 

with open('output.txt', 'w') as output: 
    for dna in sequence: 
     trimmed = dna[14:] 
     output.write(trimmed) 
     print("processed sequence with length " + str(len(trimmed))) 
0

with open() asを使用してください。open()を使用して、Pythonでファイルを読み書きしないでください。あなたはこれについてもっと読むために他の質問を検索することができます。

私は少しあなたのコードを変更したと私はそれをテストし、結果が正しい:

sequences = None 
with open('input.txt', 'r') as input_file: 
    sequences = input_file.readlines() 

with open('output.txt', 'w') as output_file: 
    for dna in sequences: 
     output_file.write(dna[14:]) 
     print("processed sequence with length ", len(dna[14:])) 
+0

それはすべてうまくいいですが、OPの質問には答えません。 – martineau

関連する問題