2017-09-30 6 views
-4

パスに未読フォルダがありますC:/Users/admin/Downloads/aclImdb/train/unsuptrainフォルダは、neg,pos、およびunsupで構成され、各フォルダには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を処理する方法の概要を示していますが、1つまたは複数のファイルは除外しています。多分それが助けになるでしょう。

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

ありがとうございました指定された方法で私はpath2でopen(os.path.join(filepath)、 'r +'、encoding = "utf8")のファイルにアクセスするための追加の式を使用しました: train.append(data2.read()) – Vijay

+0

Vijay: 'open(filepath、 'r +'、encoding =" utf8 ")としてdata2:...'がうまくいくかもしれません。 – martineau

関連する問題