2

我有这个代码:

import os
import pprint 
print("Hello")
ModList = os.listdir("C:/Users/Dat/AppData/Roaming/.minecraft/mods")
print ("The current mods you have installed are:\n")
pprint.pprint(ModList)
DisableNumber = input("To disable a mod, type it's number in the list.\n")
int (DisableNumber)
FileToDisable = ModList[DisableNumber]
print (FileToDisable)

它应该列出目录中的文件,打印列表,要求用户输入一个数字,然后用列表中的索引重命名文件名。但是,当我运行它时,我收到一个错误:

Traceback (most recent call last):
  File "C:\Users\Dat\Desktop\Python\ModDisabler.py", line 9, in <module>
FileToDisable = ModList[DisableNumber]
TypeError: list indices must be integers, not str

这个错误的原因是什么?我认为这是因为 int(DisableNumber) 不起作用,但我似乎无法为我的生活找出原因。我错过了什么吗?

4

2 回答 2

2

在您的代码中,这部分不起作用,因为您没有保存转换结果,并且修改不会就地发生:

int(DisableNumber)

试试这个:

DisableNumber = int(input("To disable a mod, type it's number in the list.\n"))

请注意,如果它包含一个您打算用作数字的整数值 - 例如,作为数组索引,则input()返回一个必须显式转换为的字符串。int现在这DisableNumber是一个整数,这一行将起作用:

FileToDisable = ModList[DisableNumber]
于 2013-09-20T00:09:03.713 回答
0

替换int(DisableNumber)DisableNumber = int(DisableNumber)

于 2013-09-20T00:09:16.250 回答