sqlite 如何打印出一个文件的名称与扩展名没有目录

tkclm6bt  于 2023-04-30  发布在  SQLite
关注(0)|答案(2)|浏览(159)

我正在尝试格式化以下文件:C:\Users\Johnny\Downloads\Misc\ticket。jpg只打印出文件名和扩展名,但我一直卡住。在Python3中有没有简单的方法可以做到这一点?

import sys
import sqlite3
import os

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

file_name = curr.execute("select current_path from downloads ORDER BY end_time DESC")
file_result = file_name.fetchone(`
file_no_dir = file_result[0]
path = file_no_dir
# Input
print(os.path.basename(path).split('/')[-1])

预期输出:

ticket.jpg

输出:

C:\Users\Johnny\Downloads\Misc\ticket.jpg
k4aesqcs

k4aesqcs1#

你应该先escape the backslashes。就像这样:

path_with_backslashes = "test\123.jpg"
corrected_path = path_with_backslashes.replace('\\', '\\\\')

行打印的问题(操作系统)path.basename(path).split('/')[-1])的问题是,您在split()方法中使用了正斜杠(/),而您提供的路径使用了反斜杠()。在Windows上,路径分隔符是反斜杠,因此应该用反斜杠拆分。你可以使用OS。sep. path.sep以获得适合您的平台的分隔符。以下是更正后的行:

print(os.path.basename(corrected_path ).split(os.path.sep)[-1])

一个(更好的)方法是使用os.path.basename(),因为它不需要split()方法。您可以简单地用途:

print(os.path.basename(corrected_path))

这应该会给予你预期的输出。
将以下内容添加到您的代码示例中:

import sys
import sqlite3
import os

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

file_name = curr.execute("select current_path from downloads ORDER BY end_time DESC")
file_result = file_name.fetchone(`
file_no_dir = file_result[0]
path = file_no_dir.replace('\\', '\\\\')
print(os.path.basename(path))
cngwdvgl

cngwdvgl2#

filename = os.path.basename(path)

相关问题