从用户目录加载文件

Loading files from directory from user

我正在尝试从一个目录加载大量文件。我以前可以通过这个

来做到这一点
#directory where all data will be stored
dataDir="C:/Users/me/Desktop/Data/"
Files=[] #list of files
for file in os.listdir(dataDir):
    Files.append(scipy.io.loadmat(dataDir+file))

但是现在,我试图让用户 select 文件夹,所以我有这个:

import tkinter
from tkinter import filedialog
from tkinter import *

root=tkinter.Tk()
filename=filedialog.askdirectory(parent=root,title='Choose a file')
print (filename)


#directory where all data will be stored
dataDir=('%s',filename)
Files=[] #list of files
for file in os.listdir(dataDir):
    Files.append(scipy.io.loadmat(dataDir+file))

它给了我这个错误: “对于 os.listdir(dataDir) 中的文件: TypeError:listdir:路径应该是字符串、字节、os.PathLike 或 None,而不是元组)

我尝试通过 str(filename) 将文件名变成一个字符串,但它仍然不起作用。有什么想法吗?

当您定义 dataDir = ('%s', filename) 时,您正在创建一个包含两个元素的元组。一个是 '%s',另一个是 filename.

的值

如果我理解正确的话你应该使用dataDir = '%s' % filename。这样 dataDir 将是一个值为 filename.

的字符串

你在命令中创建元组

dataDir=('%s',filename) 

然后你在 listdir(dataDir) 中使用它,期望字符串

直接在listdir

中使用filename
 for file in os.listdir(filename):

错误指出您给 listdir 的路径应该是 str 而您给它的路径是 tuple.

dataDir=('%s',filename)一样,dataDir是一个包含两个字符串的元组。但是,文件名已经是 str。试试 os.listdir(filename).

而不是 os.listdir(dataDir)

您将需要import os