wgij007 发表于 2022-10-6 08:21:09

能帮尽忙改一下,能遍历子目录吗

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
      



这个只能是当前目录,能帮改成子目录也能处理吗

jackz007 发表于 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)

suchocolate 发表于 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}")

suchocolate 发表于 2022-10-6 08:33:09

以后代码发全

wgij007 发表于 2022-10-6 15:54:58

suchocolate 发表于 2022-10-6 08:33
以后代码发全

这个是完整的,你这段加到那

suchocolate 发表于 2022-10-6 18:07:25

wgij007 发表于 2022-10-6 15:54
这个是完整的,你这段加到那

替换推导式

wgij007 发表于 2022-10-6 18:40:29

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

不知怎的,最后那句打印出错,% f 是什么意思的

jackz007 发表于 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" 才对。

wgij007 发表于 2022-10-7 06:58:25

jackz007 发表于 2022-10-6 19:25
抱歉,这一句有错,应该改为下面的样子
                print('删除文件: [%s]' % f)
...

收到,感谢!这样就明白多了。
页: [1]
查看完整版本: 能帮尽忙改一下,能遍历子目录吗