Python 的 word 占位符批量插入图片,新手..不知道代码哪里出问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
jbue520

Python 的 word 占位符批量插入图片,新手..不知道代码哪里出问题

  •  
  •   jbue520 Apr 25, 2022 3054 views
    This topic created in 1464 days ago, the information mentioned may be changed or developed.
    from docx import Document from docx.shared import Inches import glob from os import listdir from docx.oxml.ns import qn from docx.enum.text import WD_ALIGN_PARAGRAPH def center_insert_img(doc,img): """插入图片""" for paragraph in doc.paragraphs: # 根据文档中占位符定位图片插入的位置 if '<<img1>>' in paragraph.text: paragraph.text = paragraph.text.replace('<<img1>>', '') run = paragraph.add_run('') run.add_break() run.add_picture(img, width=Inches(6.2)) def save_img_to_doc(img): tpl_doc = r'D:\py\归档模版.docx' res_doc = r'D:\py\空港.docx' document = Document(tpl_doc) center_insert_img(document,img) document.save(res_doc) def main(): path = r'C:\Users\durpa\Desktop\身份证\*.jpg' # img = 'C:\\Users\\durpa\\Desktop\\身份证\\75+' for img in glob.glob(path): print(img) save_img_to_doc(img) if __name__ == '__main__': main() 

    代码能运行,但是只能插入一张图...还请大神指教一下..感谢

    13 replies    2022-04-26 15:57:29 +08:00
    paopjian
        1
    paopjian  
       Apr 25, 2022
    save_img_to_doc(img)得在 for 范围里
    jbue520
        2
    jbue520  
    OP
       Apr 25, 2022
    @paopjian 你说的是上面的 for 还是下面的 for? 我缩进都已经做了,但是还只能插入一张图,并不能把目录下的图片全插入进去
    zhzy
        3
    zhzy  
       Apr 25, 2022
    根据你的代码 main() 里面的 save_img_to_doc(img) 只运行了一次, 也就是只插入了最后一个 img
    jbue520
        4
    jbue520  
    OP
       Apr 25, 2022
    @zhzy 哦,那就是 save_img_to_doc(img) 需要在做一个循环...我先试试,,感谢感谢
    zhzy
        5
    zhzy  
       Apr 25, 2022
    save_img_to_doc(img) 和 print(img) 要保持一样的缩进
    jbue520
        6
    jbue520  
    OP
       Apr 25, 2022
    @zhzy 已经一样的缩进了,但是却还是只插入了一张图..
    kokutou
        7
    kokutou  
       Apr 26, 2022 via Android
    每运行一次 save_img_to_doc ,都把源模板 docx 插入 1 张图片,然后保存到了目标 docx 。。。
    每次都是用的源模板。。。

    这样说你应该懂了吧
    jbue520
        8
    jbue520  
    OP
       Apr 26, 2022
    @kokutou 听是听懂了,但是菜鸟还在想怎么解决....不知道大神能否告知?
    kasusa
        9
    kasusa  
       Apr 26, 2022
    是想要把 word 中所有 的<<img1>> 都换成同一张图片嘛
    如果是的话,单看我是没看出来有啥问题。不过如果你需要进一步的协助,
    kasusa
        10
    kasusa  
       Apr 26, 2022
    你可以把文件和代码都传到 github 上面建一个项目我下载下来试试才知道哪里有问题
    jbue520
        11
    jbue520  
    OP
       Apr 26, 2022
    @kasusa 我想把文件夹里的匹配的.JPG 文件全部插入到<<img1>>,其实这部分只是我要做的事情的其中之一, 我把详细的上传到百度网盘了,代码我只实现了一部分,其他的还请大神指教 链接: https://pan.baidu.com/s/1fGIW9heQq-41AkBx53HWAg
    提取码:kccx
    kasusa
        12
    kasusa  
       Apr 26, 2022
    emm 我还是不管那么多了,你想往一个<<img1>>里面插入多张图片对吧,我有空了试着做做看。
    而且对于 word 操作我更推荐你用 c#而不是 python ,py 的 docx 库有很多坑
    jbue520
        13
    jbue520  
    OP
       Apr 26, 2022
    @kasusa 突然感觉被抛弃了..... =.=!!
    About     Help     Advertise     Blog     API     FAQ     Solana     2665 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 16:01 PVG 00:01 LAX 09:01 JFK 12:01
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86