python - 如何通过将目录路径作为 Python 中的用户输入将文档(即 .docx 文件)转换为 Python 中的 .pdf?
问题描述
我试过这个,但在转换函数中“\”被传递而不是“\”。我是否已经从用户那里输入了目录路径,然后通过查找最后一个索引“\”和“。”来检查文件是否是 doc 文件。我已经提取了文件名并通过从将创建pdf的目录中替换变量dpath中的do来修改它,之后我试图用'\'替换'\'以便我可以将值传递给转换函数,这就是我卡住的地方。
from docx2pdf import *
class convert:
def doc2pdf():
dpath="C:\ Users\ Rj rouma\Desktop\ do.pdf"
try:
n=input("Enter the file location : ")
if(n.endswith(".docx") or n.endswith(".doc")):
a=n.rfind('\ ')
b=n.rfind('.')
s=n[a+2 :b ]
rep=dpath.replace('do',s)
n1=str(n.replace('\\ ','\ '))
rep1=str(rep.replace('\\ ','\ '))
print(n1," ",rep1)
convert(n,rep1)
except:
print("Check the location path correctly")
if __name__=='__main__':
ob= doc2pdf()
解决方案
我只编程了 8 个月,但在那段时间里,我发现我最喜欢的获取和处理路径对象的方法是使用模块pathlib,以及需要任何用户输入时的 tkinter (更具体地说,filedialog )。在我看来,虽然你的方法可以工作,但我认为它很难阅读,因此当你试图识别部分功能时很容易迷失方向。坦率地说,它的麻烦多于它的价值。
from pathlib import Path
from tkinter.filedialog import askopenfilename
# Require user to select a file. Returns the full file path
filepath = askopenfilename(title='Select a document file.', filetypes=[('Word document', '*.docx')])
print('Full filepath:', filepath)
# Make the filepath string a Path object so you can use Path's methods.
path = Path(filepath)
# Profit
print('Full path:', path)
print('Extention only: ', path.suffix)
print('Last component in path: ', path.stem)
print('Direct parent of file: ', path.parent)
输出为:
Full filepath: C:/Users/User/Folder_A/Folder_B/word_doc.docx
Full path: C:\Users\User\Folder_A\Folder_B\word_doc.docx
Extension only: .xlsx
Last component in path: word_doc
Direct parent of file: C:\Users\User\Folder_A\Folder_B
我没有使用过 docx2pdf,所以我无法帮助转换实际文件,但是 pathlib.Path 将允许您根据需要对路径字符串进行切片。
推荐阅读
- reactjs - Jest/Storyshots 测试我的组件中的响应式元素
- python - 如何仅沿数据框的选定列进行推断?
- android - Android键盘上的下一步按钮未提交表单
- azure - 如何测试 Azure 函数可扩展性?
- excel - 尝试递增 1 时值未更新
- javascript - 将数据从一个组件发送到另一个 Vuejs
- python - 有没有办法在 python 中更改用户的输入?
- java - 当我单击 JButton 以使其加倍输出时如何制作。例如,我单击 jButton 一次,但我想输出 2
- odoo - odoo 版本 10 javascript 错误,模块失败
- powerbi - 在这种情况下,AVERAGEX 函数的作用是什么?