当我尝试在dirPath变量中设置路径时,下面的命令给出一个空的[]。但是,只有当我在python解释器中通过更改为dirPath指定的目录来运行它时,它才有效。这里有什么问题?我希望这一行能从任何目录中提供正确的输出。
print [os.path.abspath(name) for name in os.listdir(dirPath) if os.path.isdir(name)]
答案 0 :(得分:1)
除非您当前的工作目录(cwd)等于dirPath
,否则您的代码将无法按预期运行。
os.listdir(dirPath)
返回文件夹名称列表(NOT路径!)。
os.path.abspath(name)
基本上会返回"cwd\name"
您想要的是os.path.abspath( os.path.join( dirPath, name ) )
,即"dirPath\name"
。
因此,要获得您需要的路径列表:
path_list = [path for path in (os.path.abspath( os.path.join( dirPath, name ) ) for name in os.listdir(dirPath)) if os.path.isdir(path)]
(请注意,我不太确定这是否适用于python 2.7,因为我只有p3来测试它。)
答案 1 :(得分:0)
试试这段代码:
[x[0] for x in os.walk(directory)]
或者你可以使用
os.listdir(path)
也是。
答案 2 :(得分:0)
我尝试了下面的内容,它正确地列出了名称。绝对路径使用有问题。如果有人能够弄清楚这个问题会很棒。截至目前,我正在使用目录名称并连接以获得完整的绝对路径!
>>> for name in os.listdir("/home/clonedir"):
... print(name)
...
directory1
directory2
>>>