Как решить "Ошибка типа: индексы списка должны быть целыми или кусочками, а не str" - PullRequest
2 голосов
/ 15 января 2020

У меня есть 2 файла для копирования из папки в другую папку, и это мои коды:

import shutil

src = '/Users/cadellteng/Desktop/Program Booklet/'
dst = '/Users/cadellteng/Desktop/Python/'
file = ['AI+Product+Manager+Nanodegree+Program+Syllabus.pdf','Artificial+Intelligence+with+Python+Nanodegree+Syllabus+9-5.pdf']

for i in file:
    shutil.copyfile(src+file[i], dst+file[i])

При попытке запустить код я получил следующее сообщение об ошибке:

/Users/cadellteng/venv/bin/python /Users/cadellteng/PycharmProjects/someProject/movingFiles.py
Traceback (most recent call last):
  File "/Users/cadellteng/PycharmProjects/someProject/movingFiles.py", line 8, in <module>
    shutil.copyfile(src+file[i], dst+file[i])
TypeError: list indices must be integers or slices, not str

Process finished with exit code 1

Я попытался найти какое-то решение для stackoverflow, и один поток предложил сделать это:

for i in range(file):
    shutil.copyfile(src+file[i], dst+file[i])

, а затем я получил следующее сообщение об ошибке:

/Users/cadellteng/venv/bin/python /Users/cadellteng/PycharmProjects/someProject/movingFiles.py
Traceback (most recent call last):
  File "/Users/cadellteng/PycharmProjects/someProject/movingFiles.py", line 7, in <module>
    for i in range(file):
TypeError: 'list' object cannot be interpreted as an integer

Process finished with exit code 1

Так что теперь я полностью сбит с толку. Если «я» не может быть строкой и не может быть целым числом, что это должно быть? Я использую PyCharm CE и очень плохо знаком с Python.

Ответы [ 2 ]

3 голосов
/ 15 января 2020

Просто используйте приведенный ниже код, поскольку i не нуждается в дополнительном индексировании file[...], потому что это не индекс:

for i in file:
    shutil.copyfile(src + i, dst + i)

Если вы хотите использовать range, используйте его таким образом с len:

for i in range(len(file)):
    shutil.copyfile(src+file[i], dst+file[i])

Но, конечно, первое решение предпочтительнее.

2 голосов
/ 15 января 2020

Попробуйте приведенный ниже код и прочитайте для выписки в python

import shutil

src = '/Users/cadellteng/Desktop/Program Booklet/'
dst = '/Users/cadellteng/Desktop/Python/'
file = ['AI+Product+Manager+Nanodegree+Program+Syllabus.pdf','Artificial+Intelligence+with+Python+Nanodegree+Syllabus+9-5.pdf']

for i in file:
    shutil.copyfile(src + i, dst + i)
...