Python: Problem mit .jpeg?
Hey ich hab ein Problem und meine Programmierkenntnisse reichen nicht einmal ansatzweise dazu aus das zu lösen:
gegeben seien zwei Listen, einmal REM und SEM. Dieser werden jeweils Bilderpfade hinzugefügt. Die Bilder werden dann in ne docx-Tabelle eingefügt. Klappt soweit auch alles, zumindest für SEM.
REM=[]
EDX=[]
n_pictures=0
for i in os.listdir(path_target_main+'\\'+AN_input+'\\'):
if i.endswith('.jpeg'):
if i[0]!='s':
n_pictures+=1
REM.append(path_target_main+'\\'+AN_input+'\\'+i)
EDX.append(path_target_main+'\\'+AN_input+'\\s'+i)
k=input(n_pictures)
path=os.getcwd()
path_doc=path+'\main.docx'
doc = docx.Document(path_doc)
Table=doc.tables[0]
for row in Table.rows:
for cell in row.cells:
paragraphs = cell.paragraphs
for paragraph in paragraphs:
for run in paragraph.runs:
font = run.font
font.size= Pt(11)
font.name="Arial"
n_rows=(n_pictures*2)-2
for i in range(0,n_rows):
Table.add_row().cells
print(REM)
print(EDX)
Table.cell(0, 1).text = ''
Table.cell(0, 1).paragraphs[0].runs[0].add_picture(REM[1],width=Cm(4.5))
#Table.cell(0, 0).text = ''
#Table.cell(0, 0).paragraphs[0].runs[0].add_picture(REM[0],width=Cm(4.5))
Table.cell(1, 0).text = '1.1'
Table.cell(1, 0).paragraphs[0].runs[0].font.bold = False
doc_name="new.docx"
doc.save(doc_name)
Traceback (most recent call last):
[...HAB ICH GELÖSCHT WEGEN DÄMLICHER ZEICHENBEGRENZNG"
[bla bla]e-packages\docx\image\image.py", line 126, in width
return Inches(self.px_width / self.horz_dpi)
ZeroDivisionError: division by zero
Möchte ich die Bilder aus REM jedoch hinzufügen erhalte ich den ZeroDivisionError: division by zero. Bissl gegoogelt: irgend ne Info scheint net gespeichert zu sein für die Bilder unter REM. Wie behebe ich das? Das nervt mich total gerade -.-
1 Antwort
Mit deinem Posting kann man wenig anfangen.
Offenbar ist self.horz_dpi gerade 0 und durch 0 darf man bekanntlich nicht teilen.
Ist die Python-Datei [bla bla]e-packages\docx\image\image.py von dir geschrieben?
Da du den interessanten Teil weggelöscht hast, kann man nicht sagen, wo die Funktion width aufgerufen wurde, in der durch 0 geteilt wird.
in einem teil der jpeg sind einfach wichtige infos nicht vorhanden. die bilder sind aber net von mir, ka wie ich das lösen soll. btw: auf dieser plattform gibts ne zeichenbegrenzung..,..
Wofür genau ist das Projekt denn? Sieht so nach Scalping aus.
Hm wofür _genau_ kann ich nicht sagen leider. Aber das ich eigentlich n Noob bin schon :D . Naja hatte es aber gelöst, indem ich einfach Glück beim googeln hatte; wäre ich alleine net drauf gekommen:
from docx.image.image import Image
from docx.shared import Inches
@property
def image_width(self):
if (self.horz_dpi == 0):
return Inches(self.px_width / 72)
return Inches(self.px_width / self.horz_dpi)
@property
def image_height(self):
if (self.vert_dpi == 0):
return Inches(self.px_height / 72)
return Inches(self.px_height / self.vert_dpi)
Image.width = image_width
Image.height = image_height
und das ganze hab ich dann wohl zufällig an die richtige stelle kopiert :D oh man.. ich bin echt n noob haha