You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python3中提取不含目录路径的文件名及扩展名?

在Python3中提取Windows路径的文件名及扩展名的正确方法

你需要从Windows路径C:\Users\Johnny\Downloads\Misc\ticket.jpg中提取文件名ticket.jpg,当前代码未能实现预期效果,以下是问题分析和解决方案:

原代码的问题

  1. 语法错误:file_result = file_name.fetchone( 未闭合括号,会导致代码运行报错
  2. 多余操作:os.path.basename(path).split('/')[-1]完全没必要——os.path.basename本身就能适配Windows路径分隔符,直接返回文件名;而用/分割Windows路径字符串不会产生任何分割效果,反而可能掩盖问题

两种简单实现方法

方法1:使用os.path.basename()(兼容所有Python3版本)

os.path模块会自动识别系统路径分隔符,无需手动处理斜杠/反斜杠:

import os

path = r"C:\Users\Johnny\Downloads\Misc\ticket.jpg"
print(os.path.basename(path))  # 输出:ticket.jpg

方法2:使用pathlib(Python3.4+推荐,更简洁)

pathlib是Python3.4引入的面向对象路径处理库,代码更直观易读:

from pathlib import Path

path = Path(r"C:\Users\Johnny\Downloads\Misc\ticket.jpg")
print(path.name)  # 输出:ticket.jpg

修正后的完整代码

基于os.path的版本

import sys
import sqlite3
import os

conn = sqlite3.connect(sys.argv[1], uri=True)
curr = conn.cursor()
curr.execute("select * FROM downloads")

# 获取最新下载的文件路径
file_name = curr.execute("select current_path from downloads ORDER BY end_time DESC")
file_result = file_name.fetchone()  # 修复括号闭合问题

if file_result:  # 增加空值判断,避免索引错误
    path = file_result[0]
    print(os.path.basename(path))  # 直接提取文件名

基于pathlib的版本

import sys
import sqlite3
from pathlib import Path

conn = sqlite3.connect(sys.argv[1], uri=True)
curr = conn.cursor()
curr.execute("select * FROM downloads")

file_name = curr.execute("select current_path from downloads ORDER BY end_time DESC")
file_result = file_name.fetchone()

if file_result:
    path = Path(file_result[0])
    print(path.name)

内容的提问来源于stack exchange,提问作者J Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 00:13:30