2016-05-01 9 views
-1

各メンバーが8桁の文字列であるリストがあります。リストからファイルに書き込むとき、最終出力はリストの一部のメンバーを失います

x = open('a.txt', 'w') 
for l in range(len(values)): 
    for m in range(0,7): 
     current = values[l] 
     x.write(current[m]) 
     x.seek((l*8)+(m)) 

結果は次のとおりです。

123456782384823823441236... 

私は次のコードでそれを行うことを試みた:

values = [ '12345678', '23848238', '23441236', ... 

は、私は次のように.TXTにそれらのすべてを書きたいです.txtには最初の数字(この例では '1')がありません。最後にすべての8桁目が最後まで欠落しています。私はすべてを索引付けしているように見せつけようとしましたが、最初の桁が表示されましたが、まだ8番目の桁が欠けています。

+1

なぜ、範囲を超えて反復し、各値を通常の方法で書くのではなく、すべてのものを探していますか? – TigerhawkT3

+0

通常の方法は何ですか?私は15分前にPythonを使い始めました。私はそれに精通していません。どんな提案も大歓迎です。 – wet

+0

Pythonは、文字列をファイルに書き込むなどの一般的なケースを最適化します。それを行う通常の方法については、以下の私の答えを参照してください。 – TigerhawkT3

答えて

1

あなたseekがループの最後であるので、あなたは、最初の文字が欠けている - あなたは2回目の最初の文字を上書きさせます。いいえ、まったく求めて - range(0,7)あなたは本当に、ただ出力項目提案@ TigerhawkT3として一つずつ、このようなデータの書き込みを停止する必要があり[0,1,2,3,4,5,6]

あるので

あなたはすべての8番目の文字を逃しています。

+0

この範囲は7文字に限定されていますか、この場合は文字列/リストのインデックスとは異なるインデックスですか?そして、ああ、今、私はループの最後の 'シーク'が本当に欠けている第1桁を担当していたことがわかります。それを正確に指摘してくれてありがとう。私が尋ねることができるなら、探求などに何が問題なのですか? – wet

+0

それはただ必要ではありません。とにかくファイルポインタがどこにあるのかを探しています。 – zmbq

1

長さをチェックして、そのリスト内のすべての文字列をファイルに書きたい場合は、そのすべてを検索する必要はありません。

with open('a.txt', 'w') as output: 
    for item in values: 
     output.write(item) 
関連する問題