У вас логическая проблема.
Вы увеличиваете count = count+1
для любого *.dat
файла, который не English.dat
Вы используете count
для индексации в items = ([], [])
, который имеет ровно 2 элемента.
Третий *.dat
создаст счет из 2-х ваших индексов, только 0 и 1 -> ошибка.
Вы можете упростить свой код:
def initialiseitems():
items = ([], [])
count = 0
for root, dirs, files in os.walk("Bundles/Items/", topdown=False):
for name in files:
if name.endswith(".dat"):
if not name.startswith("English"):
fullname = os.path.join(root, name)
with open(fullname, "r") as f:
items[0].append( fullname )
items[1].append( [x.strip() for x in f.splitlines()]
return items
Возвращает кортеж (неизменный объект, который содержит 2 списка) - первый список содержит имена файлов,
второй список содержимого файла:
(["file1","file2"],[ [ ...content of file 1...],[ ...content of file 2 ...]]
[ ...content of file 1...]
- список строк без \n
на его концах.
Вы можете работать с результатом примерно так:
result = initialiseitems()
for filename,filecontent in zip (result[0],result[1]):
# filename is a string like "path/path/path/filename"
# filecontent is a list like [ line1, line2, line3, ...]