|
发表于 2016-2-27 11:53:12
|
显示全部楼层
本楼为最佳答案
本帖最后由 小小大鱼 于 2016-2-28 12:28 编辑
关键不在有没有赋值,请看我下面的运行实例,应该就明白了。
- >>> import os
- >>> os.chdir("c:\\users\\Andy\\Desktop")
- >>> os.rename('test.txt','test.tar')
- >>> with open('test.tar'): #这里没有赋值,但是用with打开,系统会自己处理文件关闭
- pass
- >>> os.rename('test.tar','test.txt') #这里没有异常
- >>> f = open('test.txt')
- >>> f.close()
- >>> os.rename('test.txt','test.tar') #上面赋值后关闭了文件,这里也没有异常
- >>> f = open('test.tar')
- >>> os.rename('test.tar','test.txt') #此处虽然赋值了,但是没有关闭文件,异常!
- Traceback (most recent call last):
- File "<pyshell#11>", line 1, in <module>
- os.rename('test.tar','test.txt')
- PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。: 'test.tar' -> 'test.txt'
- >>> f.close() #此处关闭文件
- >>> os.rename('test.tar','test.txt')
- >>> (open('test.txt')).close() #请注意,这里我没有赋值,但是我加了个括号,也就是把文件关闭了,下面就没有异常!
- >>> os.rename('test.txt','test.tar')
复制代码
不知道我讲清楚没有。 |
|