鱼C论坛

 找回密码
 立即注册
查看: 2886|回复: 8

[已解决]能帮尽忙改一下,能遍历子目录吗

[复制链接]
发表于 2022-10-6 08:21:09 | 显示全部楼层 |阅读模式
10鱼币
import os

if os.name == 'nt':
    import win32api, win32con
   
def file_is_hidden(p):
    if os.name== 'nt':
        attribute = win32api.GetFileAttributes(p)
        return attribute & (win32con.FILE_ATTRIBUTE_HIDDEN | win32con.FILE_ATTRIBUTE_SYSTEM)
    else:
        return p.startswith('.') #linux-osx
      
[os.remove(f) for f in os.listdir('.') if file_is_hidden(f)]


这个只能是当前目录,能帮改成子目录也能处理吗
最佳答案
2022-10-6 08:21:10
本帖最后由 jackz007 于 2022-10-6 17:36 编辑

        这个代码将从用户指定的目录开始,递归删除该目录及其所有子目录内文件的 Hidden 属性被置位的任何一个文件。
        请务必慎重使用!!!
if os.name == 'nt':
    import win32api, win32con
    
def file_is_hidden(p):
    if os.name== 'nt':
        attribute = win32api.GetFileAttributes(p)
        return attribute & (win32con.FILE_ATTRIBUTE_HIDDEN | win32con.FILE_ATTRIBUTE_SYSTEM)
    else:
        return p . startswith('.')

q = input('请输入路径:') . strip()
if q:
    for root , dirs , files in os . walk(q):
        for each in files:
            f = os . path . join(root , each)
            if file_is_hidden(f):
                os . remove(f)
                print('删除文件: [%d]' % f)

最佳答案

查看完整内容

这个代码将从用户指定的目录开始,递归删除该目录及其所有子目录内文件的 Hidden 属性被置位的任何一个文件。 请务必慎重使用!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-6 08:21:10 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-10-6 17:36 编辑

        这个代码将从用户指定的目录开始,递归删除该目录及其所有子目录内文件的 Hidden 属性被置位的任何一个文件。
        请务必慎重使用!!!
if os.name == 'nt':
    import win32api, win32con
    
def file_is_hidden(p):
    if os.name== 'nt':
        attribute = win32api.GetFileAttributes(p)
        return attribute & (win32con.FILE_ATTRIBUTE_HIDDEN | win32con.FILE_ATTRIBUTE_SYSTEM)
    else:
        return p . startswith('.')

q = input('请输入路径:') . strip()
if q:
    for root , dirs , files in os . walk(q):
        for each in files:
            f = os . path . join(root , each)
            if file_is_hidden(f):
                os . remove(f)
                print('删除文件: [%d]' % f)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-6 08:31:26 | 显示全部楼层
for d, _, fs in os.walk('.'):
    for f in fs:
        if file_is_hidden(f"{d}\\{f}"):
            os.remove(f"{d}\\{f}")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-6 08:33:09 | 显示全部楼层
以后代码发全
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-10-6 15:54:58 | 显示全部楼层

这个是完整的,你这段加到那
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-6 18:07:25 | 显示全部楼层
wgij007 发表于 2022-10-6 15:54
这个是完整的,你这段加到那

替换推导式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-10-6 18:40:29 | 显示全部楼层
jackz007 发表于 2022-10-6 08:21
这个代码将从用户指定的目录开始,递归删除该目录及其所有子目录内文件的 Hidden 属性被置位的任何 ...

不知怎的,最后那句打印出错,% f 是什么意思的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-6 19:25:54 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-6 19:29 编辑
wgij007 发表于 2022-10-6 18:40
不知怎的,最后那句打印出错,% f 是什么意思的

                抱歉,这一句有错,应该改为下面的样子
                print('删除文件: [%s]' % f)
                % 是在为前面引号中的格式描述符 %s 提供联系变量,本例提供的变量 f 是字符串,对应的格式描述符应该是 "%s" 才对。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-10-7 06:58:25 | 显示全部楼层
jackz007 发表于 2022-10-6 19:25
抱歉,这一句有错,应该改为下面的样子
                print('删除文件: [%s]' % f)
...

收到,感谢!这样就明白多了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 23:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表