从Python 3文件中反转行

从Python 3文件中反转行,python,file,python-3.x,reverse,Python,File,Python 3.x,Reverse,我试图将Python 3中文本文件中的行反转并写入输出文件。目前,我在内嵌的最后一行中遇到问题,该行末尾不包含\n。我从这个代码中得到一个类型错误 def main(): endofprogram = False try: inputfile = input("Enter name of input file: ") ifile = open(inputfile, "r", encoding="utf-8") outputfi

我试图将Python 3中文本文件中的行反转并写入输出文件。目前,我在内嵌的最后一行中遇到问题,该行末尾不包含\n。我从这个代码中得到一个类型错误

def main():

    endofprogram = False
    try:
        inputfile = input("Enter name of input file: ")

        ifile = open(inputfile, "r", encoding="utf-8")

        outputfile = input("Enter name of output file: ")
        while os.path.isfile(outputfile):
            if True:
                outputfile = input("File Exists. Enter name again: ")        
        ofile = open(outputfile, "w")        


    except IOError:
        print("Error opening file - End of program")
        endofprogram = True

    #If there is not exception, start reading the input file

    if endofprogram == False:
        newline = "\n"
        for line in ifile:
            line = line.strip            
            line = line + "\n"            
            lines = ifile.readlines()

    lines.reverse()
    newlines= "".join(lines)
    print(newlines)     
    ifile.close()
    ofile.close()

main() # Call the main to execute the solution

对于您的规范,最简单的方法就是利用python中列表的reverse方法——假设我理解正确,并且您真正想要做的就是颠倒每一行的顺序。因此,对于任何给定的行:

#define line here
line_list = list(line)
line_list.reverse()
reversed_line = ''.join(line_list)
编辑:根据您对换行符的问题,这里有一个修改:

#define line here
line_list = list(line.replace('\n', ''))
line_list.reverse()
reversed_line = ''.join(line_list) + '\n'

我做这些是为了让它工作

if endofprogram == False:         

    lines = ifile.readlines()
    linelist = []
    for line in lines:
        line = line.strip("\n")
        line = line + "\n"

        linelist.append(line)


    linelist.reverse()

    newlines= "".join(linelist)
    ofile.write(newlines)  

那到底是什么,倒过来?使用reverse=行[:-1]不是更容易吗?此外,文件的最后一行不需要有新行字符。相反的.reverse会反转列表。我在一个计算机101班,我们还没有学习[::1],所以我觉得使用它不舒服,因为我们必须能够解释为什么我们的代码可以工作。本例中的最后一行确实需要一个新行字符,因为它稍后将是第一行。我稍后会这样做,但问题是文件中的最后一行没有\n,因此当我反转文件时,新的第一行和第二行将合并在一起。@KiraShelton OK,我对代码进行了修改,以确保在任何给定行中始终只有一个\n字符,并且它位于末尾。