[python] najdi, nahrad, uloz v ascii subore
peter
borique na gmail.com
Středa Srpen 23 14:23:53 CEST 2006
Zdravim,
potreboval by som poradit.
Priklad (jeden blok v subore):
$------------------------
NAME='ALFA'
CODE='x'
$------------------------
Takychto blokov je v subore vela s roznymi menami a kodmi. Potrebujem
naprogramovat skript ktory prehlada cely subor a najde vyrazy s menami
ALFA a podla toho co za kazdou ALFOU bude nasledovat (napr. x,y,z)
zmeni meno ALFA na BETAx,BETAy, BETAz a zemeneny subor ulozi.
Dostal som sa k tomu ze najdem vsetky vyrazy ktore potrebujem, podla
kodu zmenim meno na BETAx,y alebo z ale uz neviem ako zapisat nove
nazvy na rovnake miesto ako bola dana ALFA. Vzdy mi to zapise na koniec
suboru. Tu je moj kod.
Dakujem vopred za akukolvek pomoc.
Moj kod:
import shutil
NamFile="test2.nam"
BackupNamFile = 1
if BackupNamFile == 1:
shutil.copyfile(NamFile,NamFile.replace(".nam",".nam.bak"))
LineNum=1
LineNumQuantity=0
ArrayCount=0
LineNumArray=[]
ReqArray=[]
ReqName=""
NamFileOpen=file(NamFile,"r+")
for line in NamFileOpen:
LineTextFound1 = line.find("bk")
LineTextFound2 = line.find("_results")
if LineTextFound1 != -1 and LineTextFound2 != -1:
ReqName=line.split("'")[1]
print "Line: \t\t\t"+ str(LineNum)
print "Request Name: \t\t"+ ReqName
LineNumQuantity = LineNum + 2
ReqArray=[LineNum-2,ReqName]
if LineNum == LineNumQuantity:
QuantityName=line.split("'")[1]
print "Quantity Type: \t\t"+QuantityName
if QuantityName == "dx":
Suffix = "_disp"
elif QuantityName == "vx":
Suffix = "_velo"
elif QuantityName == "fx":
Suffix = "_force"
else:
Suffix = "_results"
print "Suffix: \t\t"+Suffix
NewReqName=ReqName.replace("_results",Suffix,1)
ReqArray.append(NewReqName)
LineNumArray.insert(ArrayCount,ReqArray)
ArrayCount+=1
print "New Request Name: \t"+NewReqName
print "-----------------------"
LineNum = LineNum+1
print LineNumArray
print len(LineNumArray)
NamFileOpen.close()
NamFileOpen2=file(NamFile,"r+")
LineNum=1
for i in LineNumArray:
print i
for line in NamFileOpen2:
print line
print LineNum
print i[1]
if i[0]== LineNum:
print i[0]
print LineNum
print line
Temp=line.replace(line.split("'")[1],i[2],1)
print Temp
NamFileOpen2.write(Temp)
LineNum=LineNum+1
NamFileOpen2.close()
Další informace o konferenci Python