ファイルの名前とフォルダのパス名をパラメータとし、そのフォルダ内のファイルとそれに含まれるフォルダを直接的または間接的に検索するプログラムが必要です。この関数は、見つかった場合はファイルのパス名を返し、フォルダまたはフォルダの任意のサブディレクトリにファイルが見つからない場合はNoneを返します。関数は再帰的でなければなりません。ファイルのパス名を再帰的に返す
def search(fname, path):
for item in os.listdir(path):
next = os.path.join(path, item)
try:
search(next,fname)
except:
return next
が、それはの線に沿って何かのようになります:
>>>search('fileA.txt', 'test')
'test\\fileA.txt'
>>>search('fileB.txt', 'test')
'text\\folder2\\fileB.txt'
電気ショック療法
は、ここに私のコードです。 しかし、私は見つけることができるファイルに関係なく、fileA.txtを見つけるために私のコードを得ることができます。
私は、これは彼女が私に言ったことで、いくつかの助けのために先生に尋ねた:あなたが実際に確認し、あなたの関数で条件を持っていない
- :私はいくつかの問題を参照してください。**
あなたがファイルを見つけたかどうか確認してください。これを変更する際には、次の問題を参照してください。
- すでにパスを追加している場合、fnameはそれに対応するファイルと一致しません。ファイルの絶対パス名を作成する前に、ファイル名を確認する必要があります。そうしないと、ファイル名と一致する方法がありません。
- 再帰呼び出しから返される値は何もしません。それらはパスかNoneを戻す必要があり、戻ってくるものをチェックしていません。**
なぜ 'try' /' except'を使用していますか?私は 'if' /' else'を探していると思います。 –
詳細を教えてください? – AngelE