python - 如何解决 "TypeError: list indices must be integers or slices, not str"

标签 python shutil

我有 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

所以现在我彻底困惑了。如果“i”不能是字符串也不能是整数,那么它应该是什么? 我正在使用 PyCharm CE,对 Python 还很陌生。

最佳答案

只需使用以下代码,因为 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])

但当然第一个解决方案是首选。

关于python - 如何解决 "TypeError: list indices must be integers or slices, not str",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59745214/

相关文章:

python - 如何防止pyinstaller创建的exe被Antivirus删除?

python - 使用python有选择地删除文件夹的内容

python - 检查 shutil.copyfile 何时完成

python - 为 Python 保存游戏功能?

python - 在我的听众中如何检查是否设置了 dryrun 标志

python - django中api和REST api的区别

python - 如何跳过子文件夹中的现有文件并仅复制新文件

python - 结合 pandas 和 shutil 时与解码相关的错误

python - 通过递归函数将文件夹、子文件夹和文件从Python中的一个路径复制到另一个路径

Python SSL Socket 客户端认证