Python3处理Windows共享路径:提取文件名遇语法错误的解决方案
解决Windows共享路径提取文件名的问题
先说说你遇到的问题根源,再给你几个靠谱的解决方案:
为什么你的操作会报错?
Python里的字符串中,单个反斜杠\是转义字符,用来表示换行\n、制表符\t这类特殊字符。所以:
- 用
file_path.split('\')时,Python会把\'当成要转义后面的引号,导致字符串没写完就结束,直接抛出SyntaxError: EOL while scanning string literal错误。 - 用
file_path.split('\\')却返回None,大概率是你定义file_path时没正确处理反斜杠——比如直接写file_path = '\\piyush123\\piyushtech$\\...',这里的单个反斜杠会被Python解析为转义,实际字符串里的反斜杠会丢失,路径本身无效,后续split自然出问题。 replace('\\','\')同理,单个反斜杠作为参数会被Python解析错误,同样触发语法问题。
正确的解决方案
其实不用手动折腾反斜杠和split,Python有专门处理路径的模块,简单又可靠:
方法1:用os.path.basename()(兼容所有Python版本)
这个方法专门提取路径中的文件名,自动适配Windows和Unix的路径分隔符:
import os # 用原始字符串r''定义路径,避免转义麻烦 file_path = r'\\piyush123\\piyushtech$\\Piyush\\ProFileTesting\\May\\Input_File\\OMF\\futurefilesomf.egus.xls' file_name = os.path.basename(file_path) print(file_name) # 输出: futurefilesomf.egus.xls
方法2:用pathlib(Python 3.4+推荐,更优雅)
pathlib是Python 3.4引入的面向对象路径模块,代码更直观易读:
from pathlib import Path # 同样用原始字符串定义路径 file_path = Path(r'\\piyush123\\piyushtech$\\Piyush\\ProFileTesting\\May\\Input_File\\OMF\\futurefilesomf.egus.xls') file_name = file_path.name print(file_name) # 输出: futurefilesomf.egus.xls
如果一定要手动split(不推荐)
要是你坚持手动处理,记得先正确定义路径(用原始字符串或双反斜杠转义),再split:
# 原始字符串方式 file_path = r'\\piyush123\\piyushtech$\\Piyush\\ProFileTesting\\May\\Input_File\\OMF\\futurefilesomf.egus.xls' file_name = file_path.split('\\')[-1] print(file_name) # 双反斜杠转义方式 file_path = '\\\\piyush123\\\\piyushtech$\\\\Piyush\\\\ProFileTesting\\\\May\\\\Input_File\\\\OMF\\\\futurefilesomf.egus.xls' file_name = file_path.split('\\\\')[-1] print(file_name)
总结
优先用os.path或者pathlib模块处理路径,它们会帮你搞定所有平台的路径分隔符和转义问题,比手动split更可靠,代码也更简洁。
内容的提问来源于stack exchange,提问作者Piyush S. Wanare
相关产品推荐
相关产品推荐

