Python AttributeError: NoneType object has no attribute 'close'

一世执手 提交于 2019-12-05 12:19:09

out_file is being assigned to the return value of the write method, which is None. Break the statement into two:

out_file = open(argv[2], 'w')
out_file.write(open(argv[1]).read())
out_file.close()

And really, it'd be preferable to do this:

with open(argv[1]) as in_file, open(argv[2], 'w') as out_file:
    out_file.write(in_file.read())

Using with with statement means Python will automatically close in_file and out_file when execution leaves the with block.

out_file is bound to the return value of write(); it returns None.

The expression open(...).write(...) calls the write method on the open file object but the open file object itself is then discarded again after the expression completes. While the expression is executed only the stack is referencing it.

You want to use the file object as a context manager instead, and it'll be closed automatically:

with open(argv[2], 'w') as writefile, open(argv[1]) as readfile:
    writefile.write(readfile.read())

The with .. as .. statement has also bound just the open file objects to names, so you can now address those objects directly.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!