Ich Programmiere jetzt schon eine kleine Weile in Python, aber gerade was die Struktur meines Codes angeht, hat sich seit dem Anfang nichts geändert.
Ich weiß z.B. nicht, wie man das ganze mit "main()" macht, wie man den Code schön schlank hält, wie man funktionsdefinitionen ineinander verschachtelt (main()?), damit nicht von Anfang an alles in den Speicher geladen werden, usw.
Hier habe ich mal mein aktuelles Projekt.
Code: Alles auswählen
import itertools
#Funktion um Datei hinzuzufügen und gegebenenfalls die Dateiendung hinzuzufügen
def import_file(input_file, output_file):
if input_file[-4:].lower() != ".svg":
input_file = input_file + ".svg"
else:
pass
text = open(input_file, "r")
text_2 = []
for line in text:
stripped_line = line.strip()
line_list = stripped_line.split()
text_2.append(line_list)
calculate_positions(text_2, output_file)
#Funktion um die Position der einzelnen Kreise anzupassen
def calculate_positions(text_2, output_file):
abs_xpos = int(text_2[1][2])
abs_ypos = int(text_2[1][3][:-1])
for absolute_x in text_2:
try:
if int(absolute_x[2][4:-1]) < abs_xpos:
abs_xpos = int(absolute_x[2][4:-1])
else:
pass
except:
pass
for absolute_y in text_2:
try:
if int(absolute_y[3][4:-1]) < abs_ypos:
abs_ypos = int(absolute_y[3][4:-1])
else:
pass
except:
pass
abs_xpos -= int(text_2[5][4][3:-1])
abs_ypos -= int(text_2[5][4][3:-1])
for ypos in text_2:
try:
if ypos[3][0:4] == 'cy="':
ypos1 = int(ypos[3][4:-1]) - abs_ypos
ypos[3] = 'cy="' + str(ypos1) + '"'
except:
pass
for xpos in text_2:
try:
if xpos[2][0:4] == 'cx="':
xpos1 = int(xpos[2][4:-1]) - abs_xpos
xpos[2] = 'cx="' + str(xpos1) + '"'
except:
pass
calculate_size(text_2, output_file)
#Funktion um die Gesamtgröße der SVG anzupassen damit jede Seite Bündig ist
def calculate_size(text_2, output_file):
height = int(text_2[5][4][3:-1])
width = int(text_2[5][4][3:-1])
for wide in text_2:
try:
if int(wide[2][4:-1]) > width:
width = int(wide[2][4:-1])
else:
pass
except:
pass
for high in text_2:
try:
if int(high[3][4:-1]) > height:
height = int(high[3][4:-1])
else:
pass
except:
pass
for high in text_2:
try:
if int(high[3][4:-1]) > height:
height = int(high[3][4:-1])
else:
pass
except:
pass
width += int(text_2[5][4][3:-1])
height += int(text_2[5][4][3:-1])
text_2[1][2] = str(width)
text_2[1][3] = str(height) + '"'
text_2[2][1] = 'height="' + str(height) + '"'
text_2[2][2] = 'width="' + str(width) + '"'
make_list(text_2, output_file)
#Funktion um aus der Liste mit Listen wieder einzelne Strings zu machen
def make_list(text_2, output_file):
text_2 =" ".join(list(itertools.chain.from_iterable(text_2)))
text_2 = text_2.replace("> <", ">\n<")
write_to_file(text_2, output_file)
#Funktion um die neuen Strings in eine neue Datei zu schreiben
def write_to_file(text_2, output_file):
if output_file[-4:].lower() != ".svg":
output_file = output_file + ".svg"
else:
pass
file = open(output_file, "w")
file.write(text_2)
file.close()
#Abfrage der Dateipfade und -namen
input_file = input('Path to Input file:\n("C:/Path/to/file.svg") ')
input_file = input_file.replace('"', '')
input_file = input_file.replace("'", '')
output_file = input('Path to Output file:\n("C:/Path/to/file.svg") ')
output_file = output_file.replace('"', '')
output_file = output_file.replace("'", '')
#Aufruf der Hauptdunktion
import_file(input_file, output_file)
Code: Alles auswählen
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 2000 3000" xml:space="preserve" background-color="black" >
<rect height="3000" width="2000" fill="black"/>
<circle id="circle" cx="450" cy="1868" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="500" cy="1782" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="550" cy="1696" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="550" cy="1868" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="600" cy="1610" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="600" cy="1782" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="650" cy="1352" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="650" cy="1524" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="650" cy="1696" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="650" cy="1868" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="700" cy="1266" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="700" cy="1610" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="700" cy="1782" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="750" cy="1180" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="750" cy="1352" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="750" cy="1524" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="750" cy="1696" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="750" cy="1868" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="800" cy="1094" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="800" cy="1266" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="800" cy="1610" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="800" cy="1782" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="800" cy="921" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="850" cy="1180" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="850" cy="1352" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="850" cy="1524" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="850" cy="1696" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="850" cy="1868" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="850" cy="836" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="900" cy="1094" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="900" cy="1266" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="900" cy="1610" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="900" cy="1782" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="900" cy="577" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="900" cy="750" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="900" cy="921" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="950" cy="1180" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="950" cy="1352" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="950" cy="1524" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="950" cy="1696" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="950" cy="1868" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="950" cy="491" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="950" cy="836" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1000" cy="1094" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1000" cy="1266" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1000" cy="1610" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1000" cy="1782" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1000" cy="404" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1000" cy="577" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1000" cy="750" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1000" cy="921" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1050" cy="1180" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1050" cy="1352" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1050" cy="1524" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1050" cy="1696" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1050" cy="1868" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1050" cy="491" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1050" cy="836" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1100" cy="1094" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1100" cy="1266" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1100" cy="1610" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1100" cy="1782" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1100" cy="577" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1100" cy="750" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1100" cy="921" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1150" cy="1180" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1150" cy="1352" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1150" cy="1524" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1150" cy="1696" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1150" cy="1868" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1150" cy="836" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1200" cy="1094" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1200" cy="1266" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1200" cy="1610" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1200" cy="1782" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1200" cy="921" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1250" cy="1180" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1250" cy="1352" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1250" cy="1524" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1250" cy="1696" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1250" cy="1868" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1300" cy="1266" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1300" cy="1610" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1300" cy="1782" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1350" cy="1352" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1350" cy="1524" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1350" cy="1696" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1350" cy="1868" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1400" cy="1610" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1400" cy="1782" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1450" cy="1696" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1450" cy="1869" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1500" cy="1782" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="1550" cy="1869" r="50" opacity="1" fill="rgb(0,255,0)"/>
<circle id="circle" cx="300" cy="1955" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="350" cy="1868" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="400" cy="1782" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="400" cy="1955" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="450" cy="1696" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="500" cy="1438" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="500" cy="1610" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="500" cy="1955" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="550" cy="1352" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="550" cy="1524" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="600" cy="1266" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="600" cy="1955" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="650" cy="1008" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="650" cy="1180" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="700" cy="1094" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="700" cy="1955" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="700" cy="921" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="750" cy="663" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="750" cy="836" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="800" cy="1955" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="800" cy="577" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="800" cy="750" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="850" cy="491" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="900" cy="1955" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="900" cy="404" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="950" cy="318" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1000" cy="1955" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1050" cy="318" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1100" cy="1955" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1100" cy="404" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1150" cy="491" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1200" cy="1955" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1200" cy="577" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1200" cy="750" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1250" cy="663" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1250" cy="836" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1300" cy="1094" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1300" cy="1955" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1300" cy="921" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1350" cy="1008" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1350" cy="1180" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1400" cy="1266" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1400" cy="1955" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1450" cy="1352" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1450" cy="1524" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1500" cy="1438" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1500" cy="1610" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1500" cy="1955" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1550" cy="1696" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1600" cy="1782" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1600" cy="1955" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1650" cy="1869" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="1700" cy="1955" r="50" opacity="1" fill="rgb(255,0,0)"/>
<circle id="circle" cx="600" cy="1438" r="50" opacity="1" fill="rgb(255,255,0)"/>
<circle id="circle" cx="700" cy="1438" r="50" opacity="1" fill="rgb(255,255,0)"/>
<circle id="circle" cx="750" cy="1008" r="50" opacity="1" fill="rgb(255,255,0)"/>
<circle id="circle" cx="800" cy="1438" r="50" opacity="1" fill="rgb(255,255,0)"/>
<circle id="circle" cx="850" cy="1008" r="50" opacity="1" fill="rgb(255,255,0)"/>
<circle id="circle" cx="850" cy="663" r="50" opacity="1" fill="rgb(255,255,0)"/>
<circle id="circle" cx="900" cy="1438" r="50" opacity="1" fill="rgb(255,255,0)"/>
<circle id="circle" cx="950" cy="1008" r="50" opacity="1" fill="rgb(255,255,0)"/>
<circle id="circle" cx="950" cy="663" r="50" opacity="1" fill="rgb(255,255,0)"/>
<circle id="circle" cx="1000" cy="1438" r="50" opacity="1" fill="rgb(255,255,0)"/>
<circle id="circle" cx="1000" cy="232" r="50" opacity="1" fill="rgb(255,255,0)"/>
<circle id="circle" cx="1050" cy="1008" r="50" opacity="1" fill="rgb(255,255,0)"/>
<circle id="circle" cx="1050" cy="663" r="50" opacity="1" fill="rgb(255,255,0)"/>
<circle id="circle" cx="1100" cy="1438" r="50" opacity="1" fill="rgb(255,255,0)"/>
<circle id="circle" cx="1150" cy="1008" r="50" opacity="1" fill="rgb(255,255,0)"/>
<circle id="circle" cx="1150" cy="663" r="50" opacity="1" fill="rgb(255,255,0)"/>
<circle id="circle" cx="1200" cy="1438" r="50" opacity="1" fill="rgb(255,255,0)"/>
<circle id="circle" cx="1250" cy="1008" r="50" opacity="1" fill="rgb(255,255,0)"/>
<circle id="circle" cx="1300" cy="1438" r="50" opacity="1" fill="rgb(255,255,0)"/>
<circle id="circle" cx="1400" cy="1438" r="50" opacity="1" fill="rgb(255,255,0)"/>
<circle id="circle" cx="950" cy="2041" r="50" opacity="1" fill="rgb(210,180,140)"/>
<circle id="circle" cx="950" cy="2141" r="50" opacity="1" fill="rgb(210,180,140)"/>
<circle id="circle" cx="950" cy="2241" r="50" opacity="1" fill="rgb(210,180,140)"/>
<circle id="circle" cx="950" cy="2341" r="50" opacity="1" fill="rgb(210,180,140)"/>
<circle id="circle" cx="1050" cy="2041" r="50" opacity="1" fill="rgb(210,180,140)"/>
<circle id="circle" cx="1050" cy="2141" r="50" opacity="1" fill="rgb(210,180,140)"/>
<circle id="circle" cx="1050" cy="2241" r="50" opacity="1" fill="rgb(210,180,140)"/>
<circle id="circle" cx="1050" cy="2341" r="50" opacity="1" fill="rgb(210,180,140)"/>
</svg>