0

たとえば、14 行のテキスト ファイルがあり、5 行目から始めて、これらの各行の末尾にリストからリスト アイテムを追加したいと考えています。誰でも私を助けてください。たとえば、次のテキストファイルがありますtest.txt

a b
12
1
four
/users/path/apple 
/users/path/banana 
..
..

そして、私は次のリストを持っています

周期=[21,22,23,.....]

私の質問は、これらのリスト項目を行末に追加して、これを取得する方法です:

a b
12
1
four
/users/path/apple 21
/users/path/banana 22
..
..

私はPythonが苦手で、これは単純な問題のようです。どんな助けでも大歓迎です。

4

3 に答える 3

0

一般に、ファイルの末尾 (最終行の後) に何かを追加する場合を除いて、ファイルを変更することはできません。

あなたの場合、あなたはしたい:

  1. ファイルを行ごとに読み取る
  2. 行に何かを追加します (オプション)
  3. その行を書き戻します。

いくつかの方法でそれを行うことができます。読み込み -> 変更された文字列を書き戻すのが最も簡単です。

with open("path/to/my/file/test.txt", 'rb') as f:
    # Strip will remove the newlines, spaces, etc...
    lines = [line.strip() for line in f.readlines()]
numbers = [21, 22, 23]
itr = iter(numbers)
with open("path/to/my/file/test.txt", 'wb') as f:
    for line in lines:
        if '/' in line:
            f.write('%s %s\n' % (line, itr.next()))
        else:
            f.write('%s\n' % line)

この方法の問題点は、処理を間違えると元のファイルが壊れてしまうことです。他の方法は次のとおりです。

  • 行のリストですべての変更を行い、リスト全体をチェックして書き戻します
  • 新しく作成されたファイルに書き戻し、最終的に名前を変更する可能性があります。

いつものように、Python のドキュメントは、新しい機能やパターンを発見するのに最適です。

于 2013-10-16T13:23:29.617 に答える
0

このようなもの:

for line in file.readlines():
    print line.rstrip(), cycle.pop(0) 
于 2013-10-16T13:19:14.010 に答える
0
cycle = [21, 22, 23]
i = 0
with open('myfile.txt', 'r') as fh:
    with open('new_myfile.txt', 'w' as fh_new:
        for line in fh:
            addon = ''
            if i < len(cycle):
                addon = cycle[i]
            fh_new.write(line.strip() + addon + '\n')
            i += 1            
于 2013-10-16T13:19:37.737 に答える