Tôi đang cố gắng viết trình xử lý tác vụ lên các tệp trong nhiều thư mục con khác nhau, nhưng trong khi tập lệnh của tôi có thể xem các tệp này, nó không thể làm bất kỳ điều gì với chúng lắp ráp đường đi của họ.Sử dụng đúng cách os.path và os.join
Phần vấn đề xuất phát từ vòng này:
for (path, dirs, files) in os.walk("data/"):
for image in files:
#do something to the image
Bây giờ, kịch bản hoạt động ở cấp độ đầu tiên của thư mục data
, nhưng không làm việc trên các thư mục con data
's.
tôi đã cố gắng sử dụng os.path.join()
:
for (path, dirs, files) in os.walk("data/"):
print os.path.join(path, dirs)
Nhưng đó ném như sau:
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'
Nói tóm lại, những gì tôi muốn làm là lắp ráp một con đường từ data
đến hình ảnh trong đó bao gồm data
's thư mục con. Thực hành tốt nhất để làm điều này là gì?
Khi bạn nhận được một ngoại lệ như thế này, thường là do bạn đang cố gắng thực hiện điều gì đó với danh sách các giá trị như 'dirs' thay vì mỗi giá trị. (Nếu bạn đã không nhận ra 'dirs' là một danh sách, ngoại trừ nên nâng khả năng đó là một lá cờ đỏ, và bạn có thể thử' dirs' in hoặc 'kiểu in (dirs)' để tìm hiểu.) Bạn có thể giải quyết việc này bằng cách sử dụng một vòng lặp 'for', một danh sách hiểu,' bản đồ', vv, như là câu trả lời của mgilson cho thấy, một khi bạn nhận ra đó là những gì bạn đang cố gắng làm. – abarnert