属性错误:';非类型';对象没有属性';阅读';用python
我是python新手。我正在打开一个文件,并在其中写入一些文本。稍后阅读内容,使用正则表达式查找其中的所有字符。但是我得到了错误,因为'NoneType'对象没有'read'属性。如果我也使用readlines,我会得到错误。属性错误:';非类型';对象没有属性';阅读';用python,python,regex,python-2.7,Python,Regex,Python 2.7,我是python新手。我正在打开一个文件,并在其中写入一些文本。稍后阅读内容,使用正则表达式查找其中的所有字符。但是我得到了错误,因为'NoneType'对象没有'read'属性。如果我也使用readlines,我会得到错误。filename.write(“猫比狗聪明”)是一个返回None类型的函数,与Python中的每个函数一样,如果没有使用return语句指定它。所以变量content的值是None,您正试图从中读取。请改为尝试filename.read()。filename.write(“
filename.write(“猫比狗聪明”)
是一个返回None
类型的函数,与Python中的每个函数一样,如果没有使用return
语句指定它。所以变量content
的值是None
,您正试图从中读取。请改为尝试filename.read()
。filename.write(“猫比狗聪明”)
是一个返回None
的函数,如果没有使用return
语句另行指定,则该函数的类型与Python中的每个函数类似。所以变量content
的值是None
,您正试图从中读取。改为尝试filename.read()
。Python 2中的file.write()
方法返回None
(在Python 3中,它返回二进制文件写入的字节数)
如果您想同时使用同一个文件进行写入和读取,则需要在w+
模式下打开该文件,然后返回以将文件位置恢复到起始位置:
if __name__ == '__main__':
filename = open('sevi.txt', 'wb')
content = filename.write("Cats are smarter than dogs")
for line in content.read():
match = re.findall('[A-Z]+', line)
print match
filename.close()
请注意,可以直接在文件对象上循环,生成单独的行
我做了另外两个更改:我将变量重命名为fileobj
;这里有一个文件对象,而不仅仅是文件名。我将file对象用作上下文管理器,这样即使块中出现任何错误,它也会自动关闭。Python 2中的file.write()
方法返回None
(在Python 3中,它返回二进制文件写入的字节数)
with open('sevi.txt', 'w+b') as fileobj:
fileobj.write("Cats are smarter than dogs")
fileobj.seek(0) # move back to the start
for line in fileobj:
match = re.findall('[A-Z]+', line)
print match
如果您想同时使用同一个文件进行写入和读取,则需要在w+
模式下打开该文件,然后返回以将文件位置恢复到起始位置:
if __name__ == '__main__':
filename = open('sevi.txt', 'wb')
content = filename.write("Cats are smarter than dogs")
for line in content.read():
match = re.findall('[A-Z]+', line)
print match
filename.close()
请注意,可以直接在文件对象上循环,生成单独的行
我做了另外两个更改:我将变量重命名为
fileobj
;这里有一个文件对象,而不仅仅是文件名。我将file对象用作上下文管理器,这样即使块中出现任何错误,它也会自动关闭。提示:尝试打印内容,并查看Python 2中的filename.write()
返回None
。您是否打算改用filename.read()
?您需要在w+
模式下打开该文件才能执行此操作。我得到的错误是无回溯(最近一次调用):file“\mud.txt”,第12行,for line in content.read():AttributeError:'NoneType'对象没有属性'read'FWIW,函数采用文件名字符串并返回,因此,调用文件对象filename
有点混乱。提示:尝试打印内容并查看Python 2中的filename.write()
返回None
。您是否打算改用filename.read()
?您需要在w+
模式下打开该文件才能执行此操作。我得到的错误是无回溯(最近一次调用):file“\mud.txt”,第12行,for line in content.read():AttributeError:'NoneType'对象没有属性'read'FWIW,函数采用文件名字符串并返回,因此,调用文件对象filename
有点让人困惑。但它的打印形式是:['Z','Z','Z','Z','Z']['X','P','R','C','R','R','C']['B','E','bcdefghhih','NOPQRSTUK','Z','N','Q','T','W','Z','R','R','R','R','R'['I']['V','E','R','R','C','P','Y','S','C']@sam是,这不是你所期望的吗?您没有告诉我们您试图执行的操作。@sam:yourfind_all()
call查找所有大写字母组并返回它们的列表。因此,如果您的文本只包含单个的Z
首字母缩写,那么您将得到返回。如果我想在my.txt中搜索特定的单词(例如-smarter)。那我该怎么办。如果我只想在我的.txt文件中找到字母。@山姆:这是一个全新的问题,与你的问题无关,太宽泛了,无法在注释中回答。但它打印为:['Z','Z','Z','Z']['Z']['X','P','R','C','R','R','R','R','C']是的,这不是你期望的吗?你没有告诉我们你想做什么。@sam:yourfind\u all()
call查找所有大写字母组并返回它们的列表。因此,如果您的文本仅包含单个Z
首字母,则返回的就是这些首字母。如果我想在my.txt中搜索特定单词(示例-smarter).那我该怎么办呢?.如果我只想在我的.txt文件中找到字母。@山姆:这是一个全新的问题,与你的问题无关,而且太宽泛,无法在评论中回答。
with open('sevi.txt', 'w+b') as fileobj:
fileobj.write("Cats are smarter than dogs")
fileobj.seek(0) # move back to the start
for line in fileobj:
match = re.findall('[A-Z]+', line)
print match