-3

関数を定義する必要があります。この関数save_file(filename, new_list)は、ファイル名と新しいリストを受け取り、そのリストを正しい形式でファイルに書き込みます。

たとえば、

save_file(’file.txt’, load_file(’file.txt’))

(load_fileは、ファイルを開いて読み取る定義済みの関数です)

新しいリストをまったく同じ内容で上書きする必要があります。

これについてどうすればいいのかわかりません。何かアイデアはありますか?

load_file 関数は機能しているように見えますが、save_file 関数が機能していないようです。

これは私がこれまでに持っているものです:

私はこれまでのところこれを持っています:

def load_file(filename):
f = open(filename, 'Ur')
 for line in f:
    print line

f.close()

def save_file(filename, new_list):
with open(new_list, 'Ur') as f1:
    with open(filename, 'w') as f2:
        f2.write(f1.read())
4

3 に答える 3

1

は明らかにファイル名ではなく行のリストであるため、 ingおよびingでnew_listすべてのものを必要とするわけではありません。また、1つで保存することもできません。openreadwrite

しかし、あなたはそれをほとんど簡単に行うことができます。

new_listの行に改行があるかどうかを指定しませんでした。まず、彼らがそうすると仮定しましょう。だから、あなたがしなければならないのは:

def save_file(filename, new_list):
    with open(filename, 'w') as f:
        f.write(''.join(new_list))

… また …:

def save_file(filename, new_list):
    with open(filename, 'w') as f:
        f.writelines(new_list)

しかし、あなたの先生はこのようなことを期待しているかもしれません:

def save_file(filename, new_list):
    with open(filename, 'w') as f:
        for line in new_list:
            f.write(line)

改行が削除された場合はどうなるので、それらを追加し直す必要がありますか?次に、最初の2つの方法は少し複雑ですが、3番目の方法は非常に簡単です。

def save_file(filename, new_list):
    with open(filename, 'w') as f:
        f.write('\n'.join(new_list) + '\n')

def save_file(filename, new_list):
    with open(filename, 'w') as f:
        f.writelines(line + '\n' for line in new_list)

def save_file(filename, new_list):
    with open(filename, 'w') as f:
        for line in new_list:
            f.write(line + '\n')

その間、あなたは仕事をしていませload_file。行のリストを返すことになっていますが、何も返しません(つまり、を返しますNone)。print何かを印刷すると、ユーザーが見ることができるようになり、後で使用するために何も保存されません。

あなたはこのようなものが欲しいです:

def load_file(filename):
    lines = []
    with open(filename, 'Ur') as f:
        for line in f:
            lines.append(line)
    return lines

ただし、これを作成するためのはるかに簡単な方法があります。あなたができるならfor line in f:、それfはある種の反復可能です。これはリストとほぼ同じです。実際のリストにしたい場合は、簡単です。

def load_file(filename):
    with open(filename, 'Ur') as f:
        return list(f)
于 2013-03-22T22:29:28.203 に答える
0
def save_file(filename, new_list):
    with open(new_list, 'r') as a:
        with open(filename, 'w') as b:
            b.write(a.read())

SaltChickenの答えを少し調整します。

于 2013-03-22T09:15:16.280 に答える
0

簡単にするために使用print >>します:

>>> with open('/src/file', 'r') as f1, open('/dst/file', 'w') as f2:
...      print >> f2, f1.read()

このコードの意味: "print >> sys.stderr"からインスパイアされました。

于 2013-03-22T09:16:25.740 に答える