我正在尝试从目录中加载大量文件。我曾经能够通过这个
来做到这一点#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))
但是现在,我正在尝试让用户选择文件夹,所以我有这个:
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:path应该是string,bytes,os.PathLike或None,不是元组)
我尝试通过执行str(filename)将文件名转换为字符串,但它仍然不起作用。有什么想法吗?
答案 0 :(得分:0)
定义dataDir = ('%s', filename)
时,您正在创建一个包含两个元素的元组。一个是'%s'
,另一个是filename
的值。
如果我理解正确,你应该使用dataDir = '%s' % filename
。这样dataDir
将是一个值为filename
的字符串。
答案 1 :(得分:0)
您可以在命令
中创建元组dataDir=('%s',filename)
并在listdir(dataDir)
中使用它,期望字符串
直接在filename
listdir
for file in os.listdir(filename):
答案 2 :(得分:0)
错误表明您提供的路径listdir
应为str
,并且您为其指定了tuple
。
使用dataDir=('%s',filename)
,dataDir
是一个包含两个字符串的元组。但是,文件名已经是str
。而不是os.listdir(dataDir)
,请尝试os.listdir(filename)
。
您需要import os
。