我正在使用下面的代码递归地创建所有目录的列表(文本文件)。由于存在数千个子目录,我不想一次又一次地创建列表,但是想要从上次列出它们时仅更新/插入新创建的列表。
有没有好办法呢?
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
答案 0 :(得分:2)
尝试逐步更新文件夹列表时,不保存任何内容。没有有效的方法可以从文件中间删除一行,也不能插入一行。简单地再次编写整个列表是最有效的方法,也是最简单的方法。
答案 1 :(得分:0)
尝试在文件中查找特定条目比每次重新填充列表更耗费资源。
对于性能优化,在关注一个特定区域之前,始终要确定真正的瓶颈所处的位置。在没有采用这种方法的情况下,你的重点将放在错误的地方。
确定瓶颈或热点应该始终是重构代码时的首要关注领域之一。通过这样做,您将确保您专注于具有最高ROI和最少LOE的区域。一个经验法则是,如果您可以使整个程序或至少其中的一个重要部分至少快两倍,那么您应该只尝试重构代码。 more...
答案 2 :(得分:0)
您可以运行一次性过程来将信息缓存到某种数据库中(为简单起见,可能是面向文档的文档),然后在守护进程中使用pyinotify来保持数据库同步。