列出unix目录/子目录中的所有文件

2024-04-24 08:46:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了下面的python脚本来列出directoris/sub目录中的所有文件及其大小

代码A

files = glob.glob("%s/*.*"%os.getcwd())

sorted_file = sorted(files, key=os.path.getsize)

for path, dirs, files in os.walk(os.getcwd()):
    for d in dirs:
        for f in glob.iglob(os.path.join(path, d, '*.*')):
            print f ,os.path.getsize(f)

当它通过目录运行时,我得到以下错误:

^{pr2}$

奇怪的是,当我在unix中打开/My/Folder/并执行ls -l操作时,我可以看到{}它输出的是一个Symbolic Link

代码B

for path, subdirs, files in os.walk(os.getcwd()):
    for name in files:
        f = os.path.join(path, name)
        print f,os.path.getsize(f)

错误:

/My/Folder/BEA
Traceback (most recent call last):
  File "Test.py", line 19, in <module>
    print f,os.path.getsize(f)
  File "/usr/lib/python2.6/genericpath.py", line 49, in getsize
    return os.stat(filename).st_size
OSError: [Errno 2] No such file or directory: '/My/Folder/BEA'

在这两种情况下,BEA和Perlx.x都是Symbolic Links,它们存在于指定的文件夹中。我怎样才能消除这个错误?在


Tags: path代码in目录forosmy错误
1条回答
网友
1楼 · 发布于 2024-04-24 08:46:23

为了消除错误,我添加了一个额外的条件来检查文件是否链接。在

   for path, subdirs, files in os.walk(choicedir):
        for name in files:
            f = os.path.join(path, name)
            if not os.path.islink(f):
                modified = os.path.getmtime(f)
                size = float(os.path.getsize(f))

相关问题 更多 >