AttributeError:' _io.TextIOWrapper'对象没有属性' lower'对于txt文件

时间:2016-09-28 05:23:58

标签: python

这是我的代码(来自文本文件的猪拉丁语翻译):

f = open('Assignment_4.txt', 'r+')

for line in f:
    print(line)

def pigLatin():
    var = 'ay'
    wordL = f.lower()
    firstLetter = wordL[0]
    pigLatin = wordL + firstLetter + var
    pigLatin = pigLatin[1:]
    print(pigLatin)

它适用于已定义的字符串但不会胜任该文件。感谢帮助!

2 个答案:

答案 0 :(得分:0)

<强>点数:

  • lower()适用于字符串。您正尝试使用文件句柄f。这就是您收到此错误的原因。
  • 此外,在逐行阅读文件后,您应该为每行pigLatin()调用pigLatin(line)。所以,现在,pigLatin()函数需要一个参数。
  • 此外,最后将文件关闭为f.close()。如果您使用with语句打开文件,那将是。

内嵌评论的代码:

def pigLatin(stuff_to_be_changed):
    var = 'ay'
    wordL = stuff_to_be_changed.lower()
    firstLetter = wordL[0]
    pigLatin = wordL + firstLetter + var
    pigLatin = pigLatin[1:]
    print(pigLatin)


#For string

string =  "I am to change"
#Call function
pigLatin(string)

f = open('Assignment_4.txt', 'r+')

#For file
for line in f:
    print(line)
    #Call function
    pigLatin(line)

#Close the file
f.close()

答案 1 :(得分:0)

错误非常正确 - 文件对象没有lower()方法 - 在您使用函数之前,您需要read文件中的一行文字和{{1}它分成单独的单词。 (请注意,对变量和方法使用相同的名称绝不是一个好主意,因为它可能会导致混淆。)