这个问题与Simulating file system access有关.
我需要随机选择文件和目录作为重命名、写入、读取等文件操作的参数。我打算做的是列出所有文件和目录及其路径并从中随机选择列表。但是,随着在实际文件系统中创建和删除文件和目录,列表也必须更新。我发现维护列表并以这种方式更新它是低效的,而且它还必须是原子的,以便后面的操作不会访问被前一个操作删除的文件。
你能建议一种不同的选择文件的方法吗……也许可以直接从文件系统中选择……但是我们怎么知道文件的路径呢。
谢谢
我在这里发现了一些有趣的东西 Randomly selecting a file from a tree of directories in a completely fair manner特别是在 Michael J. Barber 的回答,但由于我对 python 的无知而无法完全理解
最佳答案
当文件系统就在那里时,您不想维护一个文件列表。您应该能够直接从 C 执行此操作。从根目录开始,从中选择一个随机文件。你可以选择一个随机的最大深度,如果你击中了一个常规文件,在这个时间或之前使用它。如果它是一个目录,重复到最大深度。如果它是一个特殊文件,可能会重新开始。
这应该很快。该操作不必是原子的。如果您要执行操作时该文件不存在,请重试。应该不会太复杂。您可以在找到目标文件时构建路径。这将比直接使用 fs 更简单(我假设你的意思是在更低的层次上)并且应该很容易实现。
关于c - 从文件系统中随机选择一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7279657/