1

そのため、辞書内の各キーに対応する名前のファイルを生成するスクリプトがあります。(以下のスクリプト)

 for key, values in sequencelist.items():
     with open(key, 'w') as out:
         for value in values:
             out.write('\n'.join(value.split()) + '\n')

上記の構文を変更してさらに多くのことを行うのを手伝ってくれる人はいますか? ファイル名にプレーンテキストを追加し、現在のlen(dict.keys())使用を追加したいとrange() 思います。以下のスクリプトを参照してください。動作しません! :)

for key, values in sequencelist.items():
    for i in range(len(sequencelist.keys())):
        j = i+1
        with open('OTU(%j)' +'_' + key +'.txt' %j, 'w') as out:
            for value in values:
                out.write('\n'.join(value.split()) + '\n')

したがって、最初に作成されるファイルは OTU(1)_ key.txt になります。

with open()この線は 100% 間違っていると確信しています。

%j動作する前に行から変数を呼び出すための使用について読むために、誰かが私に何かをリンクすることもできjますか? 説明なしで、このオーバーフローの回答 (テキスト ファイルを入力し、Python で複数の出力ファイルを書き込む) のコードを使用しようとしていました。

4

1 に答える 1

1

以下を試してください

for count, (key, values) in enumerate(sequencelist.items()):
    with open('OTU(%d)_%s.txt' % (count+1, str(key)), 'w') as out:
        for value in values:
            out.write('\n'.join(value.split()) + '\n')

len(sequencelist)各値のファイルを取得しないように、open 呼び出しの順序を値の反復と交換しました。jこの変更後、あなたの議論は必要なくなったようです。enumerate 呼び出しは、ループが繰り返されるたびに for ループの count 部分をインクリメントします (count と呼ぶ必要はありません)。

%d整数を要求し、%sは文字列を要求します。キー名に応じて、 で適切に変換されstr()ます。キーがカスタム クラスである場合は、より適切な文字列形式に変換する必要があります<class __main__.Test at 0x00000....>

于 2013-04-12T22:09:14.133 に答える