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
    评论
回答: 要遍历Python文件夹中的所有文件,可以使用os模块中的os.walk()函数。这个函数可以递归地遍历文件夹及其子文件夹中的所有文件。以下是一个示例代码,可以遍历指定文件夹下的所有Python文件并打印文件名: ```python import os def traverse_files(folder_path): for root, dirs, files in os.walk(folder_path): for file in files: if file.endswith('.py'): print(file) folder_path = r'D:\PythonFiles' traverse_files(folder_path) ``` 在这个示例中,我们定义了一个名为traverse_files()的函数,它接受一个文件夹路径作为参数。然后,我们使用os.walk()函数遍历文件夹及其子文件夹中的所有文件。对于每个文件,我们检查文件名是否以'.py'结尾,如果是,则打印文件名。 请注意,你需要将`folder_path`替换为你要遍历文件夹的实际路径。 #### 引用[.reference_title] - *1* [python遍历文件](https://blog.csdn.net/Jacktuo/article/details/120936589)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [python遍历文件夹下所有文件](https://blog.csdn.net/sazass/article/details/98071353)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值