问题已解决!是newfilename [0,3]而不是newfilename [0:3]
我知道之前曾有人问过这个问题,我一直在四处寻找与该错误消息相关的所有答案和问题类型,但找不到任何遇到相同类型问题的人。
我正在播种整个方法,以防万一。所以这是我的问题;
当我尝试获取时,它是使用newfilename [int,int]的“ newfilename”的子字符串,并且编译器一直认为我在那里没有整数,至少从我在检查。
我正在使用此代码做什么:我正在剪切文件名(例如“ foo.txt”)的末尾,以获取保存为newfilename的“ foo”。然后,我将数字(转换为字符串)添加到其末尾以获取“ foo 1”,然后再添加回“ .txt”以获取最终结果“ foo 1.txt”。当我尝试取出子字符串并删除文件名的最后四个字符以获取“ foo”时,就会出现问题。在那之后,我再次检查文件夹中是否还有这样的文件,如果是,我进行另一组剪切和粘贴以将1添加到先前的文件中。老实说,我还没有测试过while循环是否可以正常工作,我只是认为它应该在技术上可以正常工作,但是由于此错误,我的代码还没有达到那么远。
我的错误:
File "C:/Users/Reaper/IdeaProjects/Curch Rec Managment/Setup.py", line 243, in moveFiles
print(newfilename[0, 3])
TypeError: string indices must be integers
请注意,此错误来自于我尝试对其进行硬编码以查看其是否有效
这是当前错误,其中的硬代码已被注释掉:
newfilename = newfilename[0, int(newfilename.__len__() - 4)] + " 1.m4a"
TypeError: string indices must be integers
我尝试过的事情:我尝试对数字进行硬编码的方法是直接输入newfilename [0,7],但仍然遇到相同的错误。我试过在一个单独的python文件中执行此操作,它似乎可以正常工作。另外,真正让我困惑的是,它可以在程序的另一部分正常工作,如下所示:
nyear = str(input("Enter new Year: "))
if nyear[0:2] != "20" or nyear.__len__() > 4:
print("Sorry incorrect year. Please try again")
所以我已经花了一段时间了,试图弄清楚世界上正在发生什么并且无法到达那里。决定我会睡一会儿,但会提出问题以防万一。如果有人指出什么地方可能出问题了,那就太好了!还是告诉我编译器只是愚蠢的,好吧,我想那也可以。
我的功能代码
def moveFiles(pathList, source, filenameList):
# moves files to new location
# counter keeps track of file name position in list
cnter = 0
for x in pathList:
filename = filenameList[cnter]
#print(x + "\\" + filename)
# new filename
if filename.find("PR") == 0:
newfilename = filename[3:filename.__len__()]
else:
newfilename = filename[2:filename.__len__()]
# checking if file exists and adding numbers to the end if it does
if os.path.isfile(x + "\\" + newfilename):
print("File Name exists!!")
# adding a 1 to the end
print(newfilename)
# PROBLEM ON NEXT TWO LINES, also prob. on any line with the following calls
print(newfilename[0, 3])
newfilename = newfilename[0, int(newfilename.__len__() - 4)] + " 1.m4a"
print("Adding 1:", newfilename)
# once again check if the file exists and adding 1 to the last number
while os.path.isfile(x + "\\" + newfilename):
# me testing if maybe i just can't have math operations withing the substring call
print("File exists again!!")
num = newfilename.__len__() - 6
num2 = newfilename.__len__() - 4
num3 = int(newfilename[num, num2])
num = newfilename.__len__() - 5
newfilename = newfilename[0, num] + str(num3 + 1)
print("Adding 1:", newfilename)
# moving file and deleting prefix
if not os.path.isdir(x):
os.makedirs(x)
os.rename(source + "\\" + filename, x + "\\" + newfilename)
cnter += 1
答案 0 :(得分:0)
我认为您需要这个:
print(newfilename[0:3])