属性错误:';非类型';对象没有属性';阅读';用python

属性错误:';非类型';对象没有属性';阅读';用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(“

我是python新手。我正在打开一个文件,并在其中写入一些文本。稍后阅读内容,使用正则表达式查找其中的所有字符。但是我得到了错误,因为'NoneType'对象没有'read'属性。如果我也使用readlines,我会得到错误。

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:your
find_all()
call查找所有大写字母组并返回它们的列表。因此,如果您的文本只包含单个的
Z
首字母缩写,那么您将得到返回。如果我想在my.txt中搜索特定的单词(例如-smarter)。那我该怎么办。如果我只想在我的.txt文件中找到字母。@山姆:这是一个全新的问题,与你的问题无关,太宽泛了,无法在注释中回答。但它打印为:['Z','Z','Z','Z']['Z']['X','P','R','C','R','R','R','R','C']是的,这不是你期望的吗?你没有告诉我们你想做什么。@sam:your
find\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