getListOfFiles
возвращает список файлов для текущего каталога и всех подкаталогов , а также вызывает replace
для каждого .cix
файла в этом списке.
Но он делает это рекурсивно, поэтому для каждого .cix
файла, который находится в подкаталоге на один уровень глубже, replace
уже был вызван.
Поскольку replace
в основном переключает строку между ENABLELABEL=1
и ENABLELABLE=0
, для каждого Файл .cix
, который находится в подкаталоге с нечетным числом уровней ниже каталога root, фактически не изменяется.
Решение - сначала получите полный список файлов и затем позвоните replace
для каждого .cix
файла:
def getListOfFiles(dirName):
# create a list of file and sub directories
# names in the given directory
listOfFile = os.listdir(dirName)
allFiles = list()
# Iterate over all the entries
for entry in listOfFile:
# Create full path
fullPath = os.path.join(dirName, entry)
# If entry is a directory then get the list of files in this directory
if os.path.isdir(fullPath):
allFiles = allFiles + getListOfFiles(fullPath)
else:
allFiles.append(fullPath)
# no replace(file) here
return allFiles
def run():
dirName = e.get()
allFiles = getListOfFiles(dirName)
# instead, do it here
for file in allFiles:
if file.endswith('.cix'):
replace(file)
e.delete(0, END)
(я также не понял, что вы пытались добиться с counter
. Я просто опустил его.)