46 lines
2.7 KiB
Python
46 lines
2.7 KiB
Python
#!/usr/bin/python
|
|
# This script will update KICAD .sch files with component properties found in the property.sch file.
|
|
#It first creates a file list, then opens each .sch file renames the old file to .sch.old file, and
|
|
#then it recreates the orginal file.
|
|
|
|
import commands,sys,os
|
|
currentline = []
|
|
fileNames = os.listdir("../")#get file list
|
|
#fileNames = ["../digi_protect_I3.sch","../digi_protect_I4.sch","../freeEMS_lib.lib"]#limit how many fileNames we look at for debug purposes
|
|
#fileNames = ["digi_protect_I3.sch"]#limit how many fileNames we look at for debug purposes
|
|
|
|
mytemplatefile=open("property.sch","r")#Open template file and create a search variable, and a replacement text file
|
|
for i in range (1,6): #Read the first several lines effectively skipping these lines
|
|
mytemplatefile.readline()#Increment the readline pointer
|
|
searchvar = mytemplatefile.readline()#create the search variable
|
|
searchvar = searchvar[0:searchvar.find('" ')+2]#save the part we need to compare against
|
|
#mytemplatefile.readline()#toss one line of the template
|
|
templateText=mytemplatefile.read()#create the replacement text variable.
|
|
mytemplatefile.close()#not needed any more, so close it.
|
|
|
|
for fileName in fileNames:#rake through each file
|
|
if fileName.endswith (".sch"):#make sure it's a schematic
|
|
if not os.path.exists('..//'+fileName+'.old'):#check that this file hasn't been processed yet, debug code
|
|
print "Processing "+fileName#let us know you are working
|
|
os.rename('..//'+fileName, '..//'+fileName+'.old')#remane newfile, to .old file
|
|
inFile = open('..//'+fileName+'.old',"r")
|
|
outFile = open('..//'+fileName,'w')
|
|
line = inFile.readline()
|
|
while line!='':# Process input file one line at a time, and replace when required
|
|
if line.startswith(searchvar):#is a component to be replaced?
|
|
outFile.write(line)#copy identified line, such the component designator is the same as the orginal file
|
|
line = inFile.readline()#read one line from orginal file
|
|
#outFile.write(line)#copy one line after identified line, such the component designator is the same as the orginal file
|
|
outFile.write(templateText)#copy new data to the output file
|
|
while line != '' and not line.startswith(' '):#skip the old data from the orginal file.
|
|
line = inFile.readline()
|
|
outFile.write(line)#not a new replaced component, so just copy the string to the new file
|
|
else:
|
|
outFile.write(line)#not a new replaced component, so just copy the string to the new file
|
|
line=inFile.readline()#incriment the line
|
|
outFile.close()
|
|
inFile.close()
|
|
os.remove('..//'+fileName+'.old')#remove old file
|
|
else:#debug code
|
|
print "Already Processed "+fileName#debug code
|