【发布时间】:2020-08-20 07:11:38
【问题描述】:
我尝试使用os 来分隔文件夹和文件,但os.path.isfile() 和os.path.isdir() 仅在文件(或文件夹)与程序位于同一文件夹中时才返回True。
我的代码:
if(os.path.exists(".")): # check if the folder exist
for x in os.listdir("."):
if os.path.isfile( os.path.abspath(x)): print('f', x)
elif os.path.isdir( os.path.abspath(x)): print('d', x)
elif os.path.islink(os.path.abspath(x)): print('l', x)
else: print('n/a', x)
控制台:
d left
f main.py
d right
我在“左”文件夹中查看的代码:
if(os.path.exists(".\\left")): # check if the folder exist
for x in os.listdir(".\\left"):
if os.path.isfile( os.path.abspath(x)): print('f', x)
elif os.path.isdir( os.path.abspath(x)): print('d', x)
elif os.path.islink(os.path.abspath(x)): print('l', x)
else: print('n/a', x)
控制台:
n/a normalFile.txt
n/a normalFolder
我真的不明白为什么os.path.isfile() 和os.path.isdir() 返回False。
【问题讨论】:
-
因为您没有告诉
os函数您的文件位于当前目录以外的任何位置。使用os.path.join(folder, x)而不仅仅是x -
变量
x只包含文件名。您正在检查文件是否存在于当前目录中。您必须使用os.path.join加入路径。
标签: python