我的Python代码有些问题(完全初学者)

时间:2014-09-10 14:15:58

标签: python-3.x

所以我对Python完全不熟悉,也无法弄清楚我的代码有什么问题。

我需要编写一个程序,询问现有文本文件的名称,然后编写另一个文件的名称,这不一定需要存在。该程序的任务是获取第一个文件的内容,将其转换为大写字母并粘贴到第二个文件。然后它应该返回文件中使用的符号数。

代码是:

file1 = input("The name of the first text file: ")
file2 = input("The name of the second file: ")
f = open(file1)
file1content = f.read()
f.close
f2 = open(file2, "w")
file2content = f2.write(file1content.upper())
f2.close
print("There is ", len(str(file2content)), "symbols in the second file.")

我创建了两个文本文件来检查Python是否正确执行了操作。原来文件的长度不正确,因为我的文件中有18个符号,Python显示有2个符号。

你能帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

我在您的代码中看到的问题:

  1. close是一种方法,因此您需要使用()运算符,否则f.close无法按照您的想法执行操作。
  2. 在任何情况下,通常首选使用with形式打开文件 - 然后它会在结束时自动关闭。
  3. write method未返回任何内容,因此file2content = f2.write(file1content.upper())None
  4. 没有理由读取整个文件内容;如果它是一个文本文件,只需遍历每一行。
  5. (未经测试)但我会写这样的程序:

    file1 = input("The name of the first text file: ")
    file2 = input("The name of the second file: ")
    chars=0
    with open(file1) as f, open(file2, 'w') as f2:
        for line in f:
            f2.write(line.upper())
            chars+=len(line)
    
    print("There are ", chars, "symbols in the second file.")
    

答案 1 :(得分:0)

input() does not do您的期望,请改用raw_input()