我正在构建一个Python ISO生成应用程序,我从os.path.isdir()获得了一些奇怪的输出。我正在使用Python 2.7.1运行Arch Linux。
我有以下文件夹结构:
/家庭/安德鲁/ create_iso / Raw_Materials /
/家庭/安德鲁/ create_iso / Raw_Materials / test_cd /
[andrew@Cydonia Raw_Materials]$ ls -l
total 4
drwxr-xr-x 3 andrew andrew 4096 Feb 23 10:20 test_cd
如您所见,test_cd /是一个普通的Linux文件夹。但是,当我运行os.path.isdir()时,我会得到不同的结果,这取决于它是否是我的for循环的一部分或者我是否对它进行了硬编码。
import os
>>>for folders in os.listdir('/home/andrew/create_iso/Raw_Materials/'):
... os.path.isdir(folders)
False
>>>os.path.isdir('/home/andrew/create_iso/Raw_Materials/test_cd')
True
我想也许我从os.listdir()获得的输出中有一些奇怪的东西,但这似乎也可以看出来:
>>>os.listdir('/home/andrew/create_iso/Raw_Materials/')
['test_cd']
任何想法为什么它对这些案件的处理方式不同?提前谢谢。
答案 0 :(得分:5)
'test_cd'本身不是目录。您需要执行os.path.join
以获取目录的绝对路径,然后在其上调用isdir
。
答案 1 :(得分:4)
您需要将文件夹附加到'/ home / andrew'...路径。
folder_path = '/home/andrew/create_iso/Raw_Materials/'
for folder in os.listdir(folder_path):
os.path.isdir(os.path.join(folder_path, folder))
答案 2 :(得分:1)
它正在当前目录中查找test_cd
,而不是在您使用os.listdir
阅读的目录中。当前目录可能与包含脚本的目录相同,并且可能不包含名为test_cd
的项目。当找不到文件时,os.path.isdir()
会返回False
,当文件存在但不是目录时,以及。正如其他人所说,使用os.path.join()
来构建完整路径。