Python:反向句子并将其写入另一个文件

时间:2014-04-11 09:11:10

标签: python

我试图反转句子并将其写入另一个文件但是当我运行它时,它会创建一个空的reversed.txt文件。

以下两行是文件输入:

  

Hello World
  每个人都在做什么?

文件输出将包含以下行:

  

dlroW olleH
  ?gniod enoyreve si woH

我的代码:

#!/usr/local/bin/python

name = raw_input("Enter name of file: ")

def Reverse(name):

    try:
        input_file=open(name,"r")
        reversed = "reversed.txt"
        output_file=open(reversed,"w")
        list=input_file.readlines()
        for i in range(0,len(list)):
            d = int(len(list) - i)
            output_file.write(list[d])
    except IOError:
        print("Cannot open file")
    except:
        print("Other errors")
    else:
        print("success")
    finally:
        print("prints always")
        input_file.close()
        output_file.close()
        #returns reversed

Reverse(name)

当我运行它时,它会打印"其他错误"。它创建新文件reversed.txt但它是空的。

3 个答案:

答案 0 :(得分:2)

您的代码段存在一些问题。但这应该会更好:

#!/usr/local/bin/python

name = raw_input("Enter name of file: ")

def Reverse(name):
    try:
        input_file=open(name,"r")
        reversed = "reversed.txt"
        output_file=open(reversed,"w")

        for line in input_file.readlines():
                output_file.write(line[-2::-1] + "\n")
    except IOError:
        print("Cannot open file")
    except:
        print("Other errors")
    else:
        print("success")
    finally:
        print("prints always")
        input_file.close()
        output_file.close()
        #returns reversed

Reverse(name)

这里我们迭代读取行,然后使用字符串可以被视为数组来反转每一行的事实。

修改 通过使用line[-2::-1],我们避免在我们写入文件的行的开头有结尾的新行。然后我们附加"\n",以便每一行都被新行字符正确分隔。

答案 1 :(得分:0)

您可以尝试这样的事情:

lines=input_file.readlines()
for line in lines:
    line = ''.join(list(reversed(line)))
    output_file.write(line)

答案 2 :(得分:0)

如果我告诉你什么是错的,没有改进你的实施(这绝对可能;))我想建议一些事情:

  1. 缩进非常重要: 在def之后的代码中,您有一个空行。这意味着您的功能在开始之前结束,而您的try except只是“浮动”。
  2. 您的excepts不是很有帮助:您只需在捕获异常时打印小信息。您不知道为什么抛出异常。更好的方法是使用您自己的自定义消息打印异常。类似的东西:
    try: someCode() except IOError as ioE: print "Can't open file! - ", ioE # Change to print() for py3.x except Exception as otherE: print "Unknown error! - ", otherE

  3. 初始化您打算使用的变量:如果您使用的是变量,请定义它!确保任何循环/尝试例外流程最终都会初始化您的可变品。如有疑问,请初始化为None(并在使用时检查None)。在您的代码中,input_file中使用了finally。但是,如果input_file=open(name,"r")引发异常,则input_file将保持未初始化,导致finally中出现另一个例外。

  4. 除此之外,您的实施可以从其他答案中得到改进。 希望这有帮助!