Python3 文件遍历 (清理VS工程文件)

前言

最近在整理以前写的程序,想要保存起来,但发现VS工程里有一些不必要保存还非常占用空间的文件,例如.sdf 文件或ipch文件夹,但写的程序太多,又不想一个一个手动整理,索性就写了个程序来实现它,正好也练习一下最近学的Python。

实现

程序大概就是遍历文件,如果是我们要删除的文件,则删除之。

相关函数

  • os.remove(file_name):删除一个文件
>>> import os
>>> os.remove("text2.txt")
  • os.removedirs(path):递归删除空文件夹
# 只有满足下列条件才会被删除:
# 1. test1目录中除了有一个test2目录外,再没有其它的目录和文件
# 2. test2目录中必须是一个空目录
>>> import os
>>> os.removedirs("test1\\test2")
  • os.path.splitext(file_name):分离文件名与扩展名
>>> import os
>>> os.path.splitext("text2.txt")
('text2', '.txt')
  • os.path.join(path,name):连接目录与文件名或目录
>>> import os
>>> os.path.join('C:\\', 'text2.txt')
'C:\\text2.txt'
  • os.chmod(path, mode):改变文件或文件夹权限
>>> import os, stat
>>> os.chmod("C:\\text2.txt", stat.S_IWRITE)
  • shutil.rmtree(path):递归删除文件夹
# 不能删除只读文件或文件夹,所以需要os.chmod来改变权限
>>> import shutil
>>> shutil.rmtree("G:\\test")
  • os.walk(path):遍历文件夹
# parent为遍历文件或文件夹的父目录
# dirs为该父目录下的文件夹
# files为该父目录下的文件
import os
for parent, dirs, files in os.walk("G:\\")
    for f in files:
        print(os.path.join(parent, f))
    for d in dirs:
        print(os.path.join(parent, d))

遇到的问题

在实现中,也遇到了不少问题。这里记录下来:

  1. 一开始用os.removedirs来删除文件夹,但错误提示为OSError: [WinError 145] The directory is not empty,后来上网查才搞明白os.removedirs只能删除空文件夹,所以换成了shutil.rmtree

  2. shutil.rmtree不能删除只读文件夹,例如Debug文件夹,后上网查询,通过os.chmod可改变权限。

代码

import os
import os.path
import stat
import shutil
root = "G:\Workshop\Program"
for parent, dirs, files in os.walk(root):
    for f in files:
        split = os.path.splitext(f)
        if  split[-1] == ".sdf" or split[-1] == ".suo":
            print("parent is: ", parent)
            print("delete: ", f)
            os.remove(os.path.join(parent, f))
    for d in dirs:
        if d == "ipch" or d == "Debug":
            print("parent is: ", parent)
            print("delete: ", d)
            os.chmod(os.path.join(parent, d), stat.S_IWRITE)#修改权限为可写文件
            shutil.rmtree(os.path.join(parent, d))
print("well done")

 

转载于:https://my.oschina.net/jjyhll/blog/750531

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值