Python提取PDF文件名:从完整路径获取云存储文件标题
提取PDF文件名作为云端标题的Pythonic方法
嘿,我懂你现在的需求——从PDF文件的完整路径里提取最后一个反斜杠和后缀点之间的部分作为云端显示的title,之前的方法确实容易踩坑,比如遇到文件名带多个点或者复杂路径结构时就失效了。
给你两个最Pythonic的解决方案,都是用Python标准库,不用额外装包:
方法一:用pathlib(Python 3.4+ 推荐)
pathlib是Python3引入的面向对象路径处理模块,处理路径超级直观,直接调用stem属性就能拿到不带后缀的文件名:
from pathlib import Path import glob pdf_list = glob.glob(r'C:\User\username\Desktop\pdf\*.pdf') for file_path in pdf_list: # 直接获取不带后缀的文件名 title = Path(file_path).stem # 上传时传入title upload.file(file_path, title=title)
比如路径是c:\User\username\Desktop\pdf\4434343434331.pdf,Path(file_path).stem会直接返回4434343434331;就算文件名是report.v2.1.pdf,也能正确返回report.v2.1,完美解决多后缀点的问题。
方法二:用os.path模块(兼容所有Python版本)
如果你还在使用Python2或者习惯传统路径处理方式,os.path模块的组合方法也能搞定:
import os import glob pdf_list = glob.glob(r'C:\User\username\Desktop\pdf\*.pdf') for file_path in pdf_list: # 先提取文件名(包含后缀) filename = os.path.basename(file_path) # 拆分文件名和后缀,取第一部分 title = os.path.splitext(filename)[0] upload.file(file_path, title=title)
为什么你之前的方法不行?
你之前用file.split(".")[0]的问题在于:如果文件名里包含多个点(比如data.2024.pdf),这个方法会只取第一个点之前的内容(也就是data),不是你想要的结果;而且直接用split("\")处理路径也容易因为转义或者不同系统的路径分隔符出问题,用标准库的路径处理工具才是稳妥的选择。
内容的提问来源于stack exchange,提问作者NULL.Dude
相关产品推荐
相关产品推荐

