タイトルは誰も正義をしていない可能性があります。 water
、fire
、air
などの単語のリストについては、ドライブE:\
をスキャンするプログラムを作成しようとしています。私のE:\
ドライブの中で、私は明らかにフォルダ内のフォルダやフォルダ内のファイルなどを持っています。ディレクトリをスキャンし、ファイル内の文字列を検索し、結果を出力します。
私は関数search (path, text)
を呼び出したいと思います。テキストでは、リスト['water', 'fire', 'air']
を入力することができます。したがって、次のようになります:search('E:\\', ['water', 'fire', 'air'])
。
私はディレクトリをスキャンしたいと思っています。スキャンしているそれぞれの「ライン」で、Scanning: E:\\...
を印刷します。私はこれを持っています。私はまた、それが水、火および/または空気を見つけるときに、出力するためにIn (directory name) found water, fire
を望む。 In (directory name) found air
などです。私はこの部分のほとんどを持っています。私はそれが複数の単語を表示する方法を理解することはできません(該当する場合)。
私が探しています出力は、例えば、次のように次のようになります。ここでは
上
Scanning: E:\ Scanning: E:\Python Fun! Scanning: E:\Python Fun!\1st Week Scanning: E:\Python Fun!\2nd Week Scanning: E:\Python Fun!\3rd Week In E:\Python Fun!\3rd Week\elements.txt found 'fire', 'water' Scanning: E:\Python Fun!\4th Week Scanning: E:\Python Fun!\5th Week In E:\Python Fun!\5th Week\elements.txt found 'air Scanning...
だから、私のコードです:私が得た
import os
def search(path, text):
for text in texts:
if os.path.isfile(path): #base case
if text in path:
print(path)
return
if not os.path.exists(path):
return
for item in os.listdir(path):
itempath = os.path.join(path, item)
if os.path.isfile(itempath):
if text in item:
print('In {} found {}'.format(itempath, word))
elif os.path.isdir(itempath):
search(itempath, text)
print('Scanning:', path)
#open(itempath).read() #tested this but got an error. See below.
else: #unknown object type
pass
search('E:\\',['water','fire', 'air'])
Traceback
エラーがAttributeError: 'str' object has no attribute 'read'
ました。だから私はそれをコメントアウトした。
このコードでは、基本的に私のリストにあるものの最後の文字、この場合はの検索結果を取得しています。余分なループが原因だと思っていますか?しかし、正確にはわからない。
私はopen filename
をどこかに追加する必要があることを知っていますが、それを実装する方法については混乱しています。私はちょうどOSモジュールについて学び始めました。そこで混乱の大部分が出てきます。私は困惑している。
グロブなしでそれを行う方法はありますか?おそらくコードはあまり単純ではなく、予想通りです。しかし、私はPythonの詳細を学び、後でショートカットに入りたいので、私は何をしているのか、複雑な状況に直面したときに何を探すべきかを知りたいです。 – adhamncheese