2017-11-28 10 views
0

디렉터리에서 많은 파일을로드하려고합니다. 나는이사용자의 디렉터리에서 파일로드 중

#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)에서 파일 : 형식 오류 :은 listDir : 문자열, 바이트, os.PathLike 또는 없음, 터플하지 내가 STR을 수행하여 문자열로 파일 이름을 만드는 시도

경로)해야한다 (파일 이름), 그리고 그것은 여전히 ​​작동하지 않습니다. 어떤 아이디어?

+0

"filename"은 이미 문자열입니다. 경로 구분 기호 만 추가하면됩니다. 파이썬에 그렇게하도록 권한다 :'Files.append (scipy.io.loadmat (os.path.join (filename, file)))'. – Novel

+0

'('% s', filename)'은 튜플입니다. 아마도 "% s"% filename'을 (를) 의미하셨습니까? 하지만, 왜 'dataDir = filename'을하지 않는지 이해가 안됩니다. –

답변

0

당신은 명령

dataDir=('%s',filename) 

에서 튜플을 만들고 문자열

사용이 filename 직접

for file in os.listdir(filename): 
+0

나는 모든 인스턴스에 대해 dataDir 대신 파일 이름을 사용했지만 지금은 [C :/Users/me/Desktop/Data/' –

+0

] 권한이 거부되었습니다.이 문제는 파이썬 문제가 아니지만 시스템 문제입니다. . 이 폴더에 액세스 할 수있는 권한이 없거나 폴더에 액세스 할 수없는 다른 사용자로 스크립트를 실행합니다. – furas

0

dataDir = ('%s', filename)을 정의 할 때 두 개의 요소가있는 튜플을 생성하게됩니다. 하나는 '%s'이고 다른 하나는 filename입니다.

정확하게 이해하면 dataDir = '%s' % filename을 사용하십시오. 그런 식으로 dataDirfilename 값의 문자열이됩니다.

0

listdir에 오류 경로는 listdir를 제공한다고 기대하는 listdir(dataDir)에서 사용 str이어야하며이라고 지정해야합니다. 0.

dataDir=('%s',filename)으로, dataDir은 두 개의 문자열을 포함하는 튜플입니다. 그러나 파일 이름은 이미 str입니다. os.listdir(dataDir) 대신 os.listdir(filename)을 사용해보십시오.

import os이 필요합니다.