python 删除文件的奇怪现象 。。。。。。。。。。。。

IKEA66 2013-09-18 08:37:08
如下代码,前面的都可以正常删除文件

而最后一个os.remove死活都报错。Error 32

这个到底是什么问题啊,求大神啊。。。。。。

os.remove(cPath+'\\'+'t')
os.remove(cPath+'\\'+cName)
os.rename(cPath+'\\ok',cPath+'\\'+cName)
r = 0
while r < 40:
if r < 10:
rr = '0'+str(r)
else:
rr = str(r)
if os.path.exists(cPath+'\\T'+rr) == True:
os.remove(cPath+'\\T'+rr)
r = r + 1
...全文
249 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
IKEA66 2013-09-22
  • 打赏
  • 举报
回复
引用 15 楼 angel_su 的回复:
既然是自己写代码,那么养成习惯打开的文件处理完后要显式关闭,不哟偷懒阿...
有关闭文件了,其它文件都能正常删除,唯独一个文件不能删除,而且显示还是wx 窗口占用了,退出窗口后,就可以正常删除
IKEA66 2013-09-22
  • 打赏
  • 举报
回复
问题己解决。是自己的问题 打开文件后,有一个文件没有关闭,才导致的
IKEA66 2013-09-21
  • 打赏
  • 举报
回复
己经查出来了,是wx 程式窗口占用了,退出以后就可以删除了, 但现在有一个问题,我把窗口self.Destroy()后,其它的文件都可以删除,只有一个文件不能删除了
angel_su 2013-09-21
  • 打赏
  • 举报
回复
既然是自己写代码,那么养成习惯打开的文件处理完后要显式关闭,不哟偷懒阿...
iasky 2013-09-18
  • 打赏
  • 举报
回复
引用 9 楼 danieljcky 的回复:
[quote=引用 8 楼 snmr_com 的回复:] 查了一下 WindowsError: [Error 32] The process cannot access the file beacause it is being used by another process. 这就比较明显了
那我怎么测试它是被哪个进程使用的,或者说怎么强制关闭文件 [/quote] 这个好办,windows下的工具太多了。例如:http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
ImN1 2013-09-18
  • 打赏
  • 举报
回复
引用 9 楼 danieljcky 的回复:
[quote=引用 8 楼 snmr_com 的回复:] 查了一下 WindowsError: [Error 32] The process cannot access the file beacause it is being used by another process. 这就比较明显了
那我怎么测试它是被哪个进程使用的,或者说怎么强制关闭文件 [/quote] 这个比较难,至少我不知道,很多很强大的文件管理器也没做这个——也可能避免误删文件的原因
IKEA66 2013-09-18
  • 打赏
  • 举报
回复
引用 8 楼 snmr_com 的回复:
查了一下 WindowsError: [Error 32] The process cannot access the file beacause it is being used by another process. 这就比较明显了
那我怎么测试它是被哪个进程使用的,或者说怎么强制关闭文件
jeky_zhang2013 2013-09-18
  • 打赏
  • 举报
回复
在网上搜下unlocker,可以检测文件被哪个进程占用,不行的话,重启下再试
ImN1 2013-09-18
  • 打赏
  • 举报
回复
查了一下 WindowsError: [Error 32] The process cannot access the file beacause it is being used by another process. 这就比较明显了
ImN1 2013-09-18
  • 打赏
  • 举报
回复
写path,尤其是windows,我一般都谨慎用 r'' 格式 或者 os.sep 或者直接写 'c:/xxx/xxx',python是能识别的
IKEA66 2013-09-18
  • 打赏
  • 举报
回复
具体错误提示为WindowsError:[Error 32] 而且还有奇怪的现象,如果我不用变量加循环。直接指定文件 如 os.remove('c:\\temp\T01') 就可以删除
iasky 2013-09-18
  • 打赏
  • 举报
回复
引用 3 楼 danieljcky 的回复:
[quote=引用 2 楼 iasky 的回复:] 不会是目录吧,参考这样操作:
import os
for root, dirs, files in os.walk(top, topdown=False):
    for name in files:
        os.remove(os.path.join(root, name))
    for name in dirs:
        os.rmdir(os.path.join(root, name))
不是目录,单个的文件[/quote] 还有可能是这个文件被打开了。。
ImN1 2013-09-18
  • 打赏
  • 举报
回复
Error 32 是 IOError,而不是OSError 所以,检查文件是否在使用中或者与其他运行中工具存在依赖关系,可能比较靠谱
IKEA66 2013-09-18
  • 打赏
  • 举报
回复
引用 2 楼 iasky 的回复:
不会是目录吧,参考这样操作:
import os
for root, dirs, files in os.walk(top, topdown=False):
    for name in files:
        os.remove(os.path.join(root, name))
    for name in dirs:
        os.rmdir(os.path.join(root, name))
不是目录,单个的文件
iasky 2013-09-18
  • 打赏
  • 举报
回复
不会是目录吧,参考这样操作:
import os
for root, dirs, files in os.walk(top, topdown=False):
    for name in files:
        os.remove(os.path.join(root, name))
    for name in dirs:
        os.rmdir(os.path.join(root, name))
IKEA66 2013-09-18
  • 打赏
  • 举报
回复
在线等啊。
浴火_凤凰 2013-09-18
  • 打赏
  • 举报
回复
删除最后一个之前,打一下Log,看看是什么文件,继而再找原因。

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧