まず、大元のフォルダにアクセスし、その中にある複数あるフォルダの中の画像ファイル名を変え、
終わったら次のフォルダの中の画像ファイル名を変える。
ということをしたいのですが、「jpg = len(image)」のところで
「 TypeError: object of type 'bool' has no len() 」
というエラーが出てきます。
調べても答えが見つからないのでご回答の程お願いします。
macOS 10.12.6
python 3.6.2
# -*- coding: utf8 -*- import sys import os import shutil top_dire = './dir/' dir_path = [] #大元フォルダの中にあるフォルダだけのパスを取得し、配列に加える for x in os.listdir(top_dire): if os.path.isdir(top_dire + x): dir_path.append(x) #中にあったフォルダの数回す for y in range(len(dir_path)): image = [] count = 1 j = 1 i = 0 image = os.listdir(dir_path[y]) #画像ファイルを配列に加える jpg = len(image) #ここでエラー出現 #画像ファイルの枚数分回す for i in range(jpg): photo = dir_path[count] + image[count] + '/' pic_path = photo count += 1 path = os.path.splitext(pic_path) #名前と拡張子を分ける if j < 10: os.rename(pic_path, dir_path + '0' + '0' + j + path[1]) elif j >= 10 and j <= 99: os.rename(pic_path, dir_path + '0' + j + path[1]) else: os.rename(pic_path, dir_path + j + path[1]) j += 1
これ、本当に実際のコードをコピペしたものですか?全角スペースが含まれているので、そもそもご提示のエラーまでたどり着かないように思うのですが。
20行目位にある不正な文字を削ったのですが、全角スペースだったのですね。他にもcount=1をcount=0にしないと動かない、dir_pathはdir_path[count]にしないと動かない、最後の方のif j < 10のあたりはゼロパディングをすればもっとすっきりできる、までは分かりました。手元のデータではファイル名修正でこけているのでまだ呈示できませんが…
実際のコードはちゃんと全角とかはないのですが、ここで色々といじってしまっていたのでそのせいで全角スペースが含まれてしまったのかもしれません。本当に申し訳ないです