我还在用python复制并替换行,问题Here。基本上,我想统计某个部分中某个模式的数量,然后在行中进行更新。我想我已经在我的问题中发现了这个问题:我调用一个子函数来在主函数中使用同一个文件,并且这个函数在时间上变得混乱起来。我对编程非常陌生,我不知道如何以另一种方式做这个copy-statistics-replace-copy事情。任何建议或提示是值得欢迎的。调用函数中的子函数来处理Python中的同一个文件?
下面是部分代码是我现在得到:
# sum number of keyframes
def sumKeys (sceneObj, objName):
sceneObj.seek(0)
block = []
Keys = ""
for line in sceneObj:
if line.find("ObjectAlias " + objName + "\n") != -1:
for line in sceneObj:
if line.find("BeginKeyframe") != -1:
for line in sceneObj:
if line.find("default") != -1:
block.append(line.rstrip())
Keys = len(block)
elif line.find("EndKeyframe") != -1:
break
break
break
return (Keys)
# renew number of keyframes
def renewKeys (sceneObj, objName):
sceneObj.seek(0)
newscene = ""
item = []
for line in sceneObj:
newscene += line
for obj in objName:
if line.find("ObjectAlias " + obj + "\n") != -1:
for line in sceneObj:
if line.find("EndKeyframe") != -1:
newscene += line
break
if line.find("BeginKeyframe") != -1:
item = line.split()
newscene += item[0] + " " + str(sumKey(sceneObj, obj)) + " " + item[-1] + "\n"
continue
else:
newscene += line
return (newscene)
原文:
lines
BeginObjects
lines
ObjectAlias xxx
lines
BeginKeyframe 34 12 ----> 34 is what I want to replace
lines
EndObject
BeginAnotherObjects
...
目标:
lines
BeginObjects
lines
ObjectAlias xxx
lines
BeginKeyframe INT 12 ---->INT comes from sumKeys function
lines
EndObject
BeginAnotherObjects
...
所以,你要找到'BeginKeyframe'部分在文件中,统计包含'default'的'BeginKeyframe'和'EndKeyframe'之间的所有行,并更新'BeginKeyframe'行以包含该数字?那是对的吗?有点难以确定你想要做什么。也许你可以澄清。 – sloth
@sloth是的,你是对的。 ** BeginKeyframe **和** EndKeyframe **之间有许多行,我需要计算**默认**模式并将其放入** BeginKeyframe **行以替换原始INT。我还需要一个函数来处理其他一些**对象**(如ObjectAlias xxx)。我不是英国人,我很难说出我的意思。 – Tian