'_io.TextIOWrapper'没有属性'替换'

时间:2015-07-03 22:39:39

标签: python python-3.x

我对Python很陌生。我正在尝试学习如何创建模块和导入函数,所以这是两个文件中的原因是因为我正在为此而愚弄。在我看来,这不是问题所在,但我想我会在那里放一些背景故事,以防它相关。

我知道我的格式和变量/文件/模块命名很草率,这应该是一次性的快速一次性,但我被卡住了,现在我很痴迷。

基本上我只是想为文件创建一个查找和替换函数,但无论我如何格式化file.replace(x,x)函数,我都会继续运行。

FILE 1 - FILEREAD.PY - 用于读取文件的函数/模块

#!/user/bin/env python3
def readfile(filename):

    '''
    Function to open a file, format it and read it into
    a variable called filename
    '''

    fobj = open(filename)
    for line in fobj:
        print(line.rstrip())
    return filename
    return fobj
    fobj.close()

def readnewfile(filename, torep, withrep):

    '''
    Function to replace strings in file - NOT USED
    '''

    fobj = open(filename)
    for line in fobj:
        print(line.strip('\n'))
        print (fobj.replace(torep, withrep))
    return filename
    fobj.close()

FILE 2 - REPLACE.PY - 要求输入并替换数据

#!/usr/bin/env python3

import string
from fileread import *

filename = input ('what is the path to the file you want to read: ')
readfile(filename)
print ('Read file ', filename) 
torep = input ('What word would you lke to replace: ')
withrep = input ('What word would you lie to replace it with: ')

print ('''





''')

#readnewfile(filename, torep, withrep)

#with open(filename) as temp:
change = open(filename).replace(torep, withrep)
print(change)

2 个答案:

答案 0 :(得分:2)

你的例外来自这条线:

change = open(filename).replace(torep, withrep)

您正在调用文件对象上不存在的replace方法(从open返回)。我怀疑你想要调用字符串所具有的replace方法。尝试:

change = open(filename).read().replace(torep, withrep)

这会调用read()将文件的内容作为单个字符串读取,然后在该字符串上调用replace

将操作分成几行可能是一个好主意,但我已将它保留在您目前拥有的相同结构中。您的代码中还有许多其他内容可以改进(例如,您已经开始使用with),但我认为上面的问题是您目前陷入困境的问题。

答案 1 :(得分:1)

我还不是100%关于如何格式化评论,规则说我可以用解决方案回答我自己的问题,但是我想归功于@Blckknght给予它。

我刚刚通过调用read()替换它,现在它工作正常:

with open(filename) as temp:
    change = temp.read().replace(torep, withrep)
print(change)