2011-02-07 8 views
3

ディレクトリにある複数のファイルの中のテキストを読み込むコードを書きました。これらのファイルは、基本的にはテキストファイルですが、彼らはいずれかが私のコードはそれらを読み取ることができませんextensions.Butていません。このコードが動作するかどうかPythonで拡張子のないテキストファイルを読むときに問題が発生しました

corpus_path = 'Reviews/' 

for infile in glob.glob(os.path.join(corpus_path,'*.*')): 
    review_file = open(infile,'r').read() 
    print review_file 

をテストするために、私はdummy.txt、ダミーテキストファイルを置きます。それは拡張機能を持っていたので機能しました。しかし、私は何をすべきかわからないので、拡張子を持たないファイルを読むことができます。 誰かが私を助けることができますか?ありがとう

+0

を惜しみあなたは何の出力を得るのですか?そうですか – infrared

答えて

5

*.*の代わりに*をちょうど使用してください。

後者では、拡張子が必要です(より正確には、ファイル名にドットが必要です)。

3

あなたは*代わりの*.*を検索できますが、これはあなたのディレクトリ内のすべてのファイルにマッチします。

基本的には、開いているファイルがテキストファイルではないケースを処理する必要があります。

6

グローブパターンは、Windowsプラットフォームでのワイルドカードと同じように機能しません。 *.*の代わりに*を使用してください。すなわちos.path.join(corpus_path,'*')*と一致します。ディレクトリ内のファイルはすべてです。そうでない場合は、それに応じてパターンを修正できます。

詳細はglob module documentationを参照してください。

+0

Windows上のワイルドカードはどのように機能しますか?常にいくつかの拡張機能がありますか? – Thomas

+0

Windowsでは、 '*。*'は拡張子がなくてもどんなファイルにもマッチしますので、 'file *。*'のようなパターンは 'file1.txt'と' filewithnoextension'にマッチします。グロブパターン '*。* 'は、0個以上の文字の後にリテラル' .'とそれに続く0個以上の文字が続くことを意味します。 – mikej

0

それはあなたが

from os import listdir 

from filename in (fn for fn in listdir(corpus_path) if '.' not in fn): 
    # do something 

が必要であることをあなたは

from os import listdir 

for fn in listdir(corpus_path): 
    if '.' not in fn: 
     # do something 

を書くことができますが、スクリプトを実行したときに発電機と、前者は1つのインデントレベル

+0

これでもファイルを開くことはできません。 'FileNotFoundError:[Errno 2]そのようなファイルやディレクトリはありません:' –

関連する問題