我正在尝试编写一个处理各个子目录中的文件的处理程序,但是当我的脚本可以看到这些文件时,它无法对它们做任何事情,因为它无法组装它们的路径。 / p>
有问题的部分来自这个循环:
for (path, dirs, files) in os.walk("data/"):
for image in files:
#do something to the image
现在,该脚本在data
目录的第一级工作,但无法在data
的子目录上工作。
我尝试使用os.path.join()
:
for (path, dirs, files) in os.walk("data/"):
print os.path.join(path, dirs)
但是这会引发以下情况:
Traceback (most recent call last):
File "bench.py", line 26, in <module>
print os.path.join(path, dirs)
File "/usr/lib/python2.7/posixpath.py", line 75, in join
if b.startswith('/'):
AttributeError: 'list' object has no attribute 'startswith'
简而言之,我想要做的是组建从data
到包含data
子目录的图像的路径。这样做的最佳做法是什么?
答案 0 :(得分:7)
我认为您希望path
加入file
file
files
for path,dirs,files in os.walk('data/'):
for f in files:
fname = os.path.join(path,f)
assert(os.path.exists(fname))
dirs
是目录list
中的path
个目录。您实际上可以修改dirs
以防止os.walk
进入某些目录(整洁!)。
答案 1 :(得分:1)
尝试:
for (path, dirs, files) in os.walk("data/"):
for image in files:
fname = os.path.join(path, image)
file = open(fname, 'rb')
os.walk documentation的两个例子都是这样做的。
答案 2 :(得分:0)
for (path, dirs, files) in os.walk("data/"):
for image in files:
file_path = os.path.join(path, image)
# do your stuff