python - 尝试更改文件的内容

时间:2011-09-22 14:35:05

标签: python

我有一个名为“hello.txt”的文件,其内容为“Hello,there!”。 我想删除“,”和“!”然后打印新内容。

使用我编写的代码,程序运行时没有错误,但是它会删除所有内容并留下一个空文件。

def myfunc(filename):
filename=open('hello.txt','r')  
lines=filename.readlines()
filename.close()
filename=open('hello.txt','w')
for line in lines:
     for punc in ".!":
        line=line.replace(punc,"")
filename.close()


myfunc("hello")

请不要使用高级命令。 谢谢!

3 个答案:

答案 0 :(得分:2)

您应该逐行打印修改后的内容,而不仅仅是在最后。

for line in lines:
    for punc in ",!":

        # note that we're assigning to line again
        # because we're executing this once for
        # each character
        line=line.replace(punc,"")

    # write the transformed line back to the file once ALL characters are replaced
    #
    # note that line still contains the newline character at the end

    # python 3
    # print(line,end="")

    # python 2.x
    print >> filename, line,

    # python 2.x alternative
    # filename.write(line)

顺便说一下,命名文件句柄 filename会让人感到困惑。

答案 1 :(得分:1)

您正在更改程序中的行但不写入文件。在对行进行更改后,请尝试filename.writelines(lines)

答案 2 :(得分:0)

您可以使用正则表达式模块。替换很容易:

import re
out = re.sub('[\.!]', '', open(filename).read())
open(filename, 'w').write(out)