0
#input
inPut = input("Please enter a file name: ")
outPut = input("Please enter a file name which you would like the file reversed: ")

#open
infile = open(inPut, "r")
outfile = open(outPut, "w")

#list main file

line = infile.readline()
line = line.rstrip()
while line != "" :
    print(line)
    line = infile.readline()
    line = line.rstrip()

#output file in reversed
outfile.write(
####confused here######




#close files
infile.close()
outfile.close() 

だから私はこれを理解しようとしてきました.ファイルを後方にリストすると思われる以下の本でこのコードを見つけました. それを自分のコードに適用する方法がわかりません。私の主な目標は、ファイル内の各行を読み取り、その行を反転して別のファイルに書き込むプログラムを作成することです。

for line in reversed(list(open("filename"))):
        print(line.rstrip())
4

1 に答える 1

0

reversed()は、与えられたデータのコピーを返しますが、順序が逆になります。

呼び出すopen(filename)と、ファイルからの行を提供するファイル オブジェクトが返されます。 list()それらのリストを作成します。 reversed()次に、リストの行を逆順に表示します。

行を逆にしたい場合は、次のようにする必要があります。

s = reversed(line)

しかしs、文字列にはなりません。これは反復子になり、反復するたびに 1 文字が返されます。必要なのは、これらの文字を結合して文字列に戻す方法です。

したがってstr.join()、イテレータの使用方法を知っている を使用できます。結合された文字間の区切りとして空の文字列を使用する必要があります。

s = ''.join(reversed(line))

したがって、必要なのは、ファイルから行を取得する方法と、変更を書き出す方法だけです。これを行う最良の方法は次のとおりです。

in_name = "some_input_file_name.txt"
out_name = "some_output_file_name.txt"
with open(in_name, "rt") as in_f, open(out_name, "wt") as out_f:
    for line in in_f:
        line = line.strip()
        reversed_line = ''.join(reversed(line))
        out_f.write(reversed_line + "\n")

したがって、上記を変更して、ユーザーがファイル名を入力できるようにするだけで、必要なものが得られると思います。

イテレータについて詳しく知りたい場合は、ここから始めるのが良いでしょう: http://docs.python.org/dev/howto/functional.html#iterators

頑張って楽しんでね!

于 2013-10-29T02:20:45.463 に答える