關(guān)于python編程中路徑錯(cuò)誤導(dǎo)致文檔無(wú)法寫入的解決方案
在編寫python程序時(shí),有時(shí)會(huì)遇到因路徑錯(cuò)誤而無(wú)法將文檔寫入指定路徑的問(wèn)題。今天,我們將討論如何解決這種問(wèn)題,特別是在將多張圖片自動(dòng)排版并寫入word文檔的過(guò)程中。
首先,展示一下實(shí)現(xiàn)這一功能的代碼:
import os from pil import image from docx import document from docx.shared import inches from docx.enum.text import wd_paragraph_alignment from docx.oxml import oxmlelement def create_word_document(image_folder, output_path): # 獲取圖片文件列表 image_files = [f for f in os.listdir(image_folder) if f.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp'))] if not image_files: print("未找到任何圖片文件。") return # 創(chuàng)建word文檔 doc = document() doc.add_heading('照片', level=1).alignment = wd_paragraph_alignment.center # 每頁(yè)排版兩張照片 photos_per_page = 2 for i, image_file in enumerate(image_files, start=1): if i % photos_per_page == 1: # 添加新的一頁(yè) section = doc.sections[-1] footer = section.footer footer.paragraphs[0].clear() # 清除頁(yè)腳原有內(nèi)容 footer.paragraphs[0].add_run(f"第 {i // photos_per_page + 1} 頁(yè)").alignment = wd_paragraph_alignment.center doc.add_page_break() # 添加圖片和備注 img_path = os.path.join(image_folder, image_file) img = image.open(img_path) doc.add_picture(img_path, width=inches(3.0)) doc.add_paragraph(f"序號(hào):{i}") doc.add_paragraph("備注:") # 保存word文檔 doc.save(output_path) print(f"word文檔已保存至: {output_path}") if __name__ == "__main__": # 指定圖片文件夾和輸出word文檔路徑 image_folder_path = "d:anzhuang/python/ima" output_word_path = "d:anzhuang/python/output/" create_word_document(image_folder_path, output_word_path)
運(yùn)行上述代碼時(shí),如果遇到類似下面的錯(cuò)誤:
d:anzhuangpythonpython.exe c:/users/admin/pycharmprojects/pythonproject/lianxi3.py traceback (most recent call last): file "c:usersadminpycharmprojectspythonprojectlianxi3.py", line 51, in <module> create_word_document(image_folder_path, output_word_path) file "c:usersadminpycharmprojectspythonprojectlianxi3.py", line 40, in create_word_document doc.save(output_path) file "d:anzhuangpythonlibsite-packagesdocxdocument.py", line 151, in save self._part.save(path_or_stream) file "d:anzhuangpythonlibsite-packagesdocxpartsdocument.py", line 106, in save self.package.save(path_or_stream) file "d:anzhuangpythonlibsite-packagesdocxopcpackage.py", line 151, in save packagewriter.write(pkg_file, self.rels, self.parts) file "d:anzhuangpythonlibsite-packagesdocxopcpkgwriter.py", line 27, in write phys_writer = physpkgwriter(pkg_file) file "d:anzhuangpythonlibsite-packagesdocxopcphys_pkg.py", line 109, in __init__ self._zipf = zipfile(pkg_file, "w", compression=zip_deflated) file "d:anzhuangpythonlibzipfile.py", line 1239, in __init__ self.fp = io.open(file, filemode) permissionerror: [errno 13] permission denied: 'd:anzhuang/python/output/'
我們嘗試通過(guò)提升管理員權(quán)限來(lái)解決無(wú)法寫入給定路徑的問(wèn)題,但仍然未能解決。這里我們來(lái)看看問(wèn)題出在哪里。
經(jīng)過(guò)仔細(xì)檢查,發(fā)現(xiàn)問(wèn)題在于輸出路徑的寫法。原代碼中的路徑是:
立即學(xué)習(xí)“Python免費(fèi)學(xué)習(xí)筆記(深入)”;
output_word_path = "d:anzhuang/python/output/"
正確的方式應(yīng)該是:
output_word_path = "d:/anzhuang/python/output/"
在windows系統(tǒng)中,當(dāng)路徑是相對(duì)盤符(例如,d:)時(shí),必須在盤符后緊跟一個(gè)/,否則系統(tǒng)會(huì)將路徑解釋為當(dāng)前工作目錄下的相對(duì)路徑,而不是絕對(duì)路徑。
因此,修改路徑后,代碼應(yīng)如下所示:
if __name__ == "__main__": # 指定圖片文件夾和輸出Word文檔路徑 image_folder_path = "d:/ANZHUANG/PYTHON/IMA" output_word_path = "d:/ANZHUANG/PYTHON/output/" create_word_document(image_folder_path, output_word_path)
通過(guò)這個(gè)簡(jiǎn)單的修改,應(yīng)該能夠解決路徑錯(cuò)誤導(dǎo)致的文檔無(wú)法寫入問(wèn)題,并成功實(shí)現(xiàn)將多張圖片拖入固定文件夾后自動(dòng)用word進(jìn)行排版的功能。