簡體   English   中英

從python中的路徑中分離文件名

[英]Isolating file names from paths in python

我正在嘗試將文件名與使用“filedialog.askopenfilenames”導入的路徑隔離開來。 我這樣做是為了以后可以在情節中使用它們。

例如,我導入了三個具有以下名稱的 excel 文件:“sample_excel_1”、“sample_excel_2.xlsx”、“sample_excel_3.xlsx”

在我的情況下,輸出是文件的完整路徑(即('//tudelft.net/staff-homes/K/mkhadijeh/Desktop/Python/sample_excel_1.xlsx', '//tudelft.net/staff-homes /K/mkhadijeh/Desktop/Python/sample_excel_2.xlsx', '//tudelft.net/staff-homes/K/mkhadijeh/Desktop/Python/sample_excel_3.xlsx') )

我希望輸出改為("sample_excel_1","sample_excel_2.xlsx","sample_excel_3.xlsx")

任何幫助!

代碼如下:

import tkinter
from tkinter import *
from tkinter import filedialog
import numpy as np


filename = filedialog.askopenfilenames(initialdir="c:/", title="Selecte a file", filetypes=(("Excel files", "*.xlsx"),("All files","*.*")))

a = filename
print(a)

我希望 a 成為一個列表,以便以后可以輕松訪問它(即 ["sample_excel_1","sample_excel_2.xlsx","sample_excel_3.xlsx"] )

由於您將文件名作為完整路徑,並且您想要稍后(未來)過程的名稱,您可以執行以下操作之一:

1-遍歷您現在擁有的列表並使用 os.path.basename 獲取文件名:

import os
import tkinter
from tkinter import *
from tkinter import filedialog
import numpy as np


filename = filedialog.askopenfilenames(initialdir="c:/", title="Selecte a file", filetypes=(("Excel files", "*.xlsx"),("All files","*.*")))

a = filename
a = [os.path.basename(path) for path in a]
print(a)

2-或使用拆分庫,通過拆分'\'並獲取生成列表中的最后一個元素

filename = filedialog.askopenfilenames(initialdir="c:/", title="Selecte a file", filetypes=(("Excel files", "*.xlsx"),("All files","*.*")))

a = filename
a = [path.split('\')[-1] for path in a]
print(a)

然后建議使用pathlib庫來實現跨平台兼容性,而不是os

import tkinter
from tkinter import *
from tkinter import filedialog
import numpy as np
from pathlib import PurePath

a = []

filename = filedialog.askopenfilenames(initialdir="c:/", title="Selecte a file", filetypes=(("Excel files", "*.xlsx"),("All files","*.*")))

for f in filename:
    a.append(PurePath(filename).name)
print(a)

編輯:我沒有看到文件名可以生成的多個輸出。 解決它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM