1

我正在使用下面的代码递归地创建所有目录的列表(文本文件)。由于有数千个子目录,我不想一次又一次地创建列表,但只想更新/插入上次列出它们时新创建的子目录。

有没有好的方法来做到这一点?

import os, sys
rootdir ="/store/user/"
myusers=['u1','u2','u3','u4','u5','u6','u7']

for myuser in myusers:
    rootuserdir=os.path.join(rootdir, myuser)
    for myRoot, mySubFolders, myFiles in os.walk(rootuserdir):
        for mySubFolder in mySubFolders:
            dirpath =  os.path.join(myRoot, mySubFolder)
            print dirpath
4

3 回答 3

2

您不会通过尝试增量更新文件夹列表来保存任何内容。没有有效的方法可以从文件中间删除一行,也没有插入一行。简单地再次编写整个列表是最有效的方法,也是最简单的方法。

于 2012-07-26T16:17:54.213 回答
0

尝试定位文件中的特定条目将比每次重新填充列表更耗费资源。

对于性能优化,请始终尝试确定真正的瓶颈在哪里,然后再专注于一个特定领域。如果不采用这种方法,您的注意力将集中在错误的地方。

确定瓶颈或热点应该始终是重构代码时的首要关注领域之一。通过这样做,您将确保您专注于具有最高 ROI 和最少 LOE 的区域。一个经验法则是,如果您可以使整个程序或至少其中的重要部分至少快一倍,您应该只尝试重构代码。更多的...

于 2012-07-26T16:19:01.217 回答
0

您可以运行一次性进程将信息缓存在某种数据库中(为简单起见,可能是面向文档的数据库),然后在守护进程中使用 pyinotify 以保持数据库同步。

于 2012-07-26T16:33:30.533 回答