2017-08-23 7 views
0

何か入力した場所にプログラムをセットアップしようとすると、ハードドライブ(c:\)がWindowsで検索されます。私は以下のコードを入力しましたが、それはlookfor変数の完全なパスをとります。私がそれらの上に停止するために一致するいくつかの文字を持っている場合私はそれを設定することができます把握しようとしている。たとえば、Currをlookfor変数に入れた場合、Current1.pngを検索したいのですが、その代わりに全長項目(Current1.png)を入力してその位置を特定する必要があります。フレーズでハードドライブ上のアイテムを検索します。

import os 
from os.path import join 

lookfor = 'Current1.png' 
for root, dirs, files in os.walk('c:\\'): 
#print ('Searching', root) 
if lookfor in files: 
    print ('Found: %s' %join(root, lookfor)) 
    break 

答えて

0

問題は、あなたが「CURR」それは文句を言わないことのために、このリストを検索する場合os.walk()は、ファイルのリストを返すと、ファイル

files = ['Current1.jpg', 'Current2.jpg', 'Current3.jpg'] 

のそのリスト内の文字列を探しているということです

>>> 'Curr' in files 
False 
>>> any(['Curr' in file for file in files]) 
True 

を見つけ

import os 
from os.path import join 

lookfor = 'Curr' 
for root, dirs, files in os.walk('c:\\'): 
    if any([lookfor in file for file in files]): 
     print ('Found: %s' %join(root, lookfor)) 
     break 
にコードを変更してください
+1

何かが欠けていない限り(長い日です)、 '[file in file in]'は単に 'files'のコピーです。私は 'any(ファイル内のファイルの検索)'または 'ファイル内のファイルの場合はファイル内のファイル 'を意味すると思います。 –

+0

AKはそれをそこに持っていましたが、今は私が探していたものより先に何かを見つけました。私が探している場所が見つかるまでステップアップする方法がありますか? – Zander

+0

あなたのリストの理解度を通常のforループに変更し、ファイル内のファイルのようにすることができます:ファイル内のlookfor:print( 'Found%s':%join(root、file); break – AK47

関連する問題