鱼C论坛

 找回密码
 立即注册
查看: 3031|回复: 13

如何在使用os.listdir()时忽略隐藏文件?

[复制链接]
发表于 2020-4-4 22:14:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
大家好,请教一下如何在使用os.listdir()时忽略隐藏文件?
我在使用os.listdir(c:\\)时,把我c盘里的隐藏文件都打印出来了,请问有什么办法能取消掉隐藏文件呢
# 输入盘名-->显示盘下面的所有目录
# 选择目录下的文件夹-->显示文件夹下的所有目录并显示地址
import os


def showfile(path):
    num = 1
    all_file = os.listdir(path)  # listdir(path='.')# 列举指定目录中的文件名('.'表示当前目录,'..'表示上一级目录)#os.curdir指代当前目录('.')
    for each_file in all_file:
        print('%s.%s' % (num, each_file))
        num += 1

def montage():
    temp_path = input('请输入地址:【C/D/E/F】:') + ':\\'
    TEMP_PATH = temp_path.upper()
    if TEMP_PATH not in ['C:\\','D:\\',' E:\\', 'F:\\']:
        input('您的输入有误,请重新输入地址:【C/D/E/F】:') + ':\\'
        return
    else:
        showfile(temp_path)

montage()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-4 22:27:33 | 显示全部楼层
本帖最后由 _荟桐_ 于 2020-4-4 23:09 编辑

import os
a = [b for b in os.listdir() if b[0] != "."]
把这一段加进去就o了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 00:12:04 | 显示全部楼层
# 输入盘名-->显示盘下面的所有目录
# 选择目录下的文件夹-->显示文件夹下的所有目录并显示地址
import os
import win32api,win32con

def showfile(path):
    num = 1
    all_file = os.listdir(path)  # listdir(path='.')# 列举指定目录中的文件名('.'表示当前目录,'..'表示上一级目录)#os.curdir指代当前目录('.')
    for each_file in all_file:
        if bool(win32api.GetFileAttributes(each_file) & win32con.FILE_ATTRIBUTE_HIDDEN):
            continue  #获取文件或目录是否有隐藏属性,有则continue
        print('%s.%s' % (num, each_file))
        num += 1

def montage():
    temp_path = input('请输入地址:【C/D/E/F】:') + ':\\'
    TEMP_PATH = temp_path.upper()
    if TEMP_PATH not in ['C:\\','D:\\',' E:\\', 'F:\\']:
        input('您的输入有误,请重新输入地址:【C/D/E/F】:') + ':\\'
        return
    else:
        showfile(temp_path)

montage()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-6 12:03:06 | 显示全部楼层

我安装了win32之后,还是打不开文件,还是报错,原因是pywintypes.error: (2, 'GetFileAttributes', '系统找不到指定的文件。')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-6 12:04:16 | 显示全部楼层
_荟桐_ 发表于 2020-4-4 22:27
import os
a =  != "."]
把这一段加进去就o了

我的隐藏文件不是由.开头的,所以还是排除不了隐藏文件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-6 12:11:35 | 显示全部楼层
想问一下,怎么不打印处隐藏文件夹呢,是隐藏文件夹,不是文件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 15:27:52 | 显示全部楼层
caiying069 发表于 2020-4-6 12:04
我的隐藏文件不是由.开头的,所以还是排除不了隐藏文件

是$开头的吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 15:30:21 | 显示全部楼层
本帖最后由 _荟桐_ 于 2020-4-6 15:35 编辑
caiying069 发表于 2020-4-6 12:11
想问一下,怎么不打印处隐藏文件夹呢,是隐藏文件夹,不是文件

a = [b for b in os.listdir() if b[0] != "$"]
这样呢??

↓↓↓不行试试这个↓↓↓
a = [b for b in os.listdir() if b[0] != "$" if os.path.isdir(b)]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 15:57:44 | 显示全部楼层
其他的那些隐藏文件夹应该是隐藏不了(是系统隐藏起来的)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-6 17:15:33 | 显示全部楼层

有部分是$开头的,有的是字母开头
E:\python\python\python.exe E:/python/学习资料/小甲鱼—《零基础入门学习Python》(公众号青年时刻)/030文件系统:介绍一个高大上的东西/新建文件夹/1.py
请输入地址:【C/D/E/F】:c
1.$360Section
2.$RECYCLE.BIN
3.2C5F5F0EB33C4F75B4DB9C6ACF8CF3E1
4.360SANDBOX
5.AppData
6.Aria2Data
7.Boot
8.bootmgr
9.C5E2E89ACDE2CFBDC803E906960B3DD3
10.ckcore.txt
11.CSUWX
12.Documents and Settings
13.Drivers
14.InstallConfig.ini
15.MSOCache
16.NVIDIA
17.pagefile.sys
18.Program Files
19.Program Files (x86)
20.ProgramData
21.System Volume Information
22.Users
23.widgets_config.upup
24.Windows
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-6 18:26:22 | 显示全部楼层
caiying069 发表于 2020-4-6 17:15
有部分是$开头的,有的是字母开头
E:\python\python\python.exe E:/python/学习资料/小甲鱼—《零基础入 ...

那些隐藏文件夹应该不能在listdir的时候不显示吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-7 21:20:43 | 显示全部楼层
_荟桐_ 发表于 2020-4-6 18:26
那些隐藏文件夹应该不能在listdir的时候不显示吧。

今天还是遇到了隐藏文件的问题,在做第30课第3个题目的时候,如果输入E://盘,会由于经过隐藏文件,发生报错,但是如果从更深的目录输入如E://python//学习资料//小甲鱼—《零基础入门学习Python》(公众号青年时刻)/就不会报错,并能成功打印出vedio.txt文件,这就很头痛了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-8 08:03:25 | 显示全部楼层
caiying069 发表于 2020-4-7 21:20
今天还是遇到了隐藏文件的问题,在做第30课第3个题目的时候,如果输入E://盘,会由于经过隐藏文件,发生 ...

那个是跳不过隐藏文件的
如果报的错是权限错误,就加上try语句
如果是有同名的文件,就弄一个循环,把所有叫vedio.txt的都找出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-9 11:25:17 | 显示全部楼层
当我没说
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 05:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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