从python中的列表替换文件中的字符串

时间:2014-04-24 12:36:33

标签: python

所以我需要查找具有特定扩展名的所有文件.txt。然后我必须打开所有这些文件并用另一个字符串更改某些字符串...这里我被卡住了。

这是我的代码:

import os, os.path

find_files=[]

for root, dirs, files in os.walk("C:\\Users\\Kevin\\Desktop\\python programi"):
for f in files:
    fullpath = os.path.join(root, f)
    if os.path.splitext(fullpath)[1] == '.txt':
        find_files.append(fullpath)
for i in find_files:
    file = open(i,'r+')
    contents = file.write()
    replaced_contents = contents.replace('xy', 'djla')
    print i

错误消息:

line 12, in <module>
    contents = file.write()
TypeError: function takes exactly 1 argument (0 given)

我知道有一个错误的争论,但我应该使用哪个论点? 我认为如果我从for i in find files:更改代码会更好 有什么建议吗?

2 个答案:

答案 0 :(得分:2)

我认为您的意思是使用file.read()而不是file.write()

答案 1 :(得分:0)

不确定您是否只是尝试打印更改,或者是否要将它们实际重写到文件中,在这种情况下您可以这样做:

for i in find_files:
    replaced_contents = ""
    contents = ""
    with open(i, "r") as file:
        contents = file.read()
        replaced_contents = contents.replace('xy', 'djla')
    with open(i, "w") as file:
        file.write(replaced_contents)
    print i