gpt4 book ai didi

python - 如何在目录树结构中指定路径

转载 作者:太空宇宙 更新时间:2023-11-04 12:32:32 32 4
gpt4 key购买 nike

从子进程import Popen, PIPE

process = Popen(['/home/hadoop/BackupFolders/','tree','.','-d'], stdout=PIPE, stderr=PIPE)
stdout, stderr = process.communicate()

你好,我正在尝试运行这些代码行,以显示像 Linux/Unix 那样的目录树结构。我已经得到要显示的树结构,但仅针对当前工作目录。

每次我输入路径并运行时,它都会显示access denied。我将 shell 设置为 true 和 false,但它没有用。

我希望能够显示当前工作目录,但也可以提供指定其他路径的选项。

最佳答案

unix 中的 exec 通过传递一串参数来工作,第一个参数是可执行文件的位置或名称,后面的参数通常是选项。在上面的示例中,您的可执行文件是“树”,但您将 /home/hadoop/BackupFolders/ 作为列表中的第一个元素,因此基本上 python 试图运行 BackupFolders 目录,这当然是没有意义的,因此是一个错误。

此外,通常 token . 表示当前工作目录,因此命令 tree 。 -d 尝试使用选项 -d 在当前工作目录上运行树。要从 cwd 更改目标目录,请更改 .范围。因此 ['tree','/home/hadoop/BackupFolders/','-d']tree/home/hadoop/BackupFolders/-d

还有一个警告——您可能会在这里陷入困境。子进程 PIPE 上的内存是固定大小的,当您溢出该内存大小时,POpen 往往会挂起,因为 stdout 流一旦无法再写入管道就永远不会关闭。树确实没有固定的返回大小,因此挂起的风险很大。用临时文件替换该管道,稍后读取输出。或者更好地从 stdout 读取线程并异步运行它。

关于python - 如何在目录树结构中指定路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42908649/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com