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

2024-10-02 14:24:30 发布

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

来自子进程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,但都不起作用。

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


Tags: import路径目录hadooptreehome进程stderr
1条回答
网友
1楼 · 发布于 2024-10-02 14:24:30

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

此外,通常标记.表示当前工作目录,因此命令tree . -d尝试使用选项-d在当前工作目录上运行tree。参数。因此['tree','/home/hadoop/BackupFolders/','-d']tree /home/hadoop/BackupFolders/ -d。你知道吗

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

相关问题 更多 >