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不会是字符串。它将是一个迭代器,每次迭代它都会返回一个字符。您需要一种将这些字符重新连接成字符串的方法。

所以你可以使用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 回答