我试图用python编写一个函数,在脚本级别扫描目录的内容(一旦清除了bug,我会将其切换为不需要在同一级别,但对于这个问题,它是不相关的),并递归地列出指向任何非目录的路径。我的逻辑是:
如果父“目录”不是一个目录,那么它必须是一个文件,所以打印它的路径。否则,对于该目录中的每个“文件”,如果每个“文件”实际上不是一个目录,则说明该文件的路径,如果“文件”实际上是一个目录,则再次调用该函数。你知道吗
我使用的环境如下:我的脚本与名为a的目录处于同一级别,a中有一个文件d.txt,还有另一个名为b的目录。b中有一个文件c.text。按照我希望这个函数执行的方式,首先它应该认识到a实际上是一个目录,因此开始遍历它的内容。当它遇到d.txt时,它应该打印出它的路径,然后当它遇到目录b时,它应该开始迭代它的内容,从而在看到它时打印到c.txt的路径。因此在本例中,脚本的输出应该是“C:\private\a\d.txt,C:\private\a\b\C.txt”,而是“C:\private\d.txt,C:\private\b”。以下是迄今为止的代码:
import os
def find_root(directory):
if not os.path.isdir(directory):
print(os.path.abspath(directory))
else:
for file in os.listdir(directory):
if not os.path.isdir(file):
print(os.path.abspath(file))
else:
find_root(file)
find_root('a')
[Python]: os.listdir(path='.'):
但它们只是基本名称。因此,为了让它们有意义,当您深入递归时:
cd
到每个文件夹(以及从递归返回时cd
返回)下面是修改后的代码,以使用1st方法:
注意事项:
输出:
相关问题 更多 >
编程相关推荐