2017-09-30 78 views
-4

我在路徑C:/Users/admin/Downloads/aclImdb/train/unsup有unsup文件夾。 train文件夾由neg,posunsup組成,每個文件夾包含12500個.txt文件。現在的問題是我想排除文件夾unsup,並將負數和正數數據存儲在數據集中。下面是我的代碼,我已經採取:如何忽略文件夾中的文件夾並讀取測試數據?

train=[] 

exclude =("C:/Users/admin/Downloads/aclImdb/train/unsup") 

dirs[:] = [d for d in dirs if d not in exclude] 
for root, dirs, files in os.walk(directory, topdown=True): 

    for subdir, dirs, files in os.walk(directory): 
     for dirs[:] in dirs: 
      for file in files: 
       if file.endswith("txt"): 
        with open(os.path.join(subdir,file),'r+',encoding="utf8") as data2: 
         train.append(data2.read()) 

結果如下:

TypeError         Traceback (most recent call last) 
<ipython-input-85-4dce3931638b> in <module>() 
     7     if file.endswith("txt"): 
     8      with open(os.path.join(subdir,file),'r+',encoding="utf8") as data2: 
----> 9       train.append(data2.read()) 
    10 
    11 

c:\users\varavoorgp\anaconda3\lib\site-packages\pandas\core\frame.py in append(self, other, ignore_index, verify_integrity) 
    4433    to_concat = [self, other] 
    4434   return concat(to_concat, ignore_index=ignore_index, 
-> 4435      verify_integrity=verify_integrity) 
    4436 
    4437  def join(self, other, on=None, how='left', lsuffix='', rsuffix='', 

c:\users\varavoorgp\anaconda3\lib\site-packages\pandas\tools\merge.py in concat(objs, axis, join, join_axes, ignore_index, keys, levels, names, verify_integrity, copy) 
    1449      keys=keys, levels=levels, names=names, 
    1450      verify_integrity=verify_integrity, 
-> 1451      copy=copy) 
    1452  return op.get_result() 
    1453 

c:\users\varavoorgp\anaconda3\lib\site-packages\pandas\tools\merge.py in __init__(self, objs, axis, join, join_axes, keys, levels, names, ignore_index, verify_integrity, copy) 
    1506   for obj in objs: 
    1507    if not isinstance(obj, NDFrame): 
-> 1508     raise TypeError("cannot concatenate a non-NDFrame object") 
    1509 
    1510    # consolidate 

TypeError: cannot concatenate a non-NDFrame object 

通過我新的Python的方式。我也想爲這些數據進行填塞和排列。

+0

注意事項目錄的代碼是在Python目錄=如下(「C:/用戶/ varavoorgp /下載/ aclImdb /火車」) – Vijay

+2

所以,你也只取(複製和粘貼)代碼frlm某處,並且您正在尋找某人爲您修改它。甚至沒有試圖去理解它。我可能是錯的(如果是的話,我很抱歉),但如果我是正確的,這是不是要走的路。你應該花一些時間學習python並理解代碼,爲你的動搖和將來與你的代碼聯繫的其他人。 –

+0

尊敬的先生,我只想要一個簡單的解決方案。如果你可以幫助文本或數據,我可以得到相同的請做。我誠懇而不是搶劫別人的工作。我只是在學習這件事物時,藉助他人的學習材料。如果你能幫助我,請做它 – Vijay

回答

0

我不完全明白你想完成什麼,你的代碼有太多問題,它無助於澄清這種情況 - 我甚至不想試圖解釋更少的問題解決所有問題它有。

相反,下面的內容展示瞭如何處理給定directory的子目錄中的所有.txt文件,同時排除其中的一個或多個文件。也許它會有所幫助。

import glob 
import os 

directory = "C:/Users/varavoorgp/Downloads/aclImdb/train" 
exclude = {"unsup",} 

for entry in os.listdir(directory): 
    entrypath = os.path.join(directory, entry) 
    if os.path.isdir(entrypath) and entry not in exclude: 
     print('processing subdirectory:', entry) 
     for filepath in glob.glob(os.path.join(entrypath, "*.txt")): 
      print(" processing file:", filepath) 
      # file processing code... 
+0

謝謝先生通過指定的方法,我使用額外的公式訪問路徑中的文件(os.path.join(filepath),'r +',encoding =「utf8」)作爲data2 : train.append(data2.read()) – Vijay

+0

Vijay:'open(filepath,'r +',encoding =「utf8」)as data2:...'可能會更好。 – martineau