2017-05-08 9 views
1

디렉토리에서 여러 텍스트 파일을 읽고이를 함께 pickle 처리하여 data.pkl 파일을 작성하는 방법을 찾아야했습니다.디렉토리의 여러 파일 pickle

은 지금까지 나는 다음과 같이 시도 :

코드 :

import _pickle as cPickle 

file1=open('/home/mustafa/data/raw.en/raw.en','rb') 
obj=[file1.read()] 
pickle.dump(obj,open('data.pkl','wb'),4) 

등 englishText_1, englishText2과 같이 표시 약 2 다스의 텍스트 파일이 있습니다.

+0

파일의 내용을 목록에 추가 한 다음 해당 목록을 pkl 파일로 피킹하려고합니까? – user2682863

+0

모든 텍스트 파일을 1 개의 pkl 파일로 가져 오려고합니다. – Silas

+0

또는 각 문서를 목록에로드 한 다음 해당 목록을 pickle로 바꿉니다. – Silas

답변

1

데이터를 사용하는 방법에 따라 각 파일을 저장하는 방법이 결정됩니다. 파일 이름이 필요하지 않은 경우 디렉토리의 각 파일을 반복하고 내용을 목록에 저장 한 다음 해당 목록을 피클 파일로 덤프하면 충분합니다. 파일 이름, 속성 등을 저장해야하는 경우 해당 정보를 저장할 클래스를 만드는 것이 좋습니다.

class FileData(object): 
    def __init__(self, path): 
     self.path = path 
     with open(path, "rb") as fileobj: 
      self.data = fileobj.read() 
     # add whatever other attributes you want to save here 

한 다음 목록 또는 다른 클래스에 FILEDATA 인스턴스를 추가하고 파일이 덤프.

file_list = [] 
for name in os.listdir(folder_path): 
    path = os.path.join(folder_path, name) 
    if not os.path.isfile(path): 
     continue 
    file_list.append(FileData(path)) 

with open(pkl_path, "wb") as fileobj: 
    cPickle.dump(file_list, fileobj) 
+0

파일 이름은 필요하지 않습니다. 나는 그것들을 어떻게 묘사 하는지를 위와 같이 추가했다. – Silas

+0

나는 "rb"경로를 읽는 디렉토리에 옮겼다. 그리고 나는 folder_path를 다음 디렉토리에서 읽었다. – Silas

+0

Error : IsADirectoryError : [Errno 21] 디렉토리이다 : '/home/mustafa/data/raw.en/raw.en' – Silas