2017-05-08 45 views
1

因此,我想找出一种方法来读取目录中的多个文本文件,并将它们一起腌制以形成data.pkl文件。在一个目录中腌制多个文件

到目前为止,我试过如下:

代码:

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

你试图将文件的内容添加到列表,然后将这些列表pickle到pkl文件? – user2682863

+0

我试图将所有这些文本文件放入1个pkl文件 – Silas

+0

或者将每个文档加载到一个列表中,然后腌制该列表 – Silas

回答

1

如何使用数据将决定您想要如何保存每个文件。如果文件名不是必需的,那么遍历目录中的每个文件并将内容保存到列表中,然后将该列表转储到pickle文件就足够了。如果你需要保存文件名,属性等,那么我会建议创建一个类来保存该信息;即

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”路径更改为从im读取的目录,并将folder_path更改为im读取的目录 – Silas

+0

错误:IsADirectoryError:[Errno 21]是一个目录:'/home/mustafa/data/raw.en/raw.en' – Silas

相关问题