2017-07-14 21 views
1

ネットワークボリュームを検索し、パスとファイルのリストを返すスクリプトを作成しようとしています。私はその後、Windowsエクスプローラ検索を実行するサブプロセスでそのリストを使用して、ユーザーが検索ブラウザからどこにでもファイルをドラッグアンドドロップできるようにしたいと考えています。私が悩んでいるところでは、変数(リスト)をサブプロセス文字列に渡しています。subprocess.openを使用して変数を文字列に渡す

例:

foo = 'returned list' 
subprocess.Popen(f'explorer /root,"search-ms:query={foo}"') 

文字列は、Windowsエクスプローラの検索引数

search-ms:parameter=value[&parameter=value]& 

の一部は、MSDNからパラメータ値の引数の使用開始されています。 https://msdn.microsoft.com/en-us/library/windows/desktop/ff684385(v=vs.85).aspx

私は、特定のパラメータでサブプロセスの文字列を実行し、genericFileName.fileExtを言うと、ファイル(複数可)が存在する場合:

subprocess.Popen(f'explorer /root,"search-ms:query=genericFileName.fileExt"') 

サブプロセスがエクスプローラを起動し、ファイルを表示する

変数を使用しようとすると、サブプロセスはエクスプローラを開きますが、検索結果は返しません。私は、サブプロセスの文字列ので

"search-ms:query={foo}" 

{FOO}

内の変数を使用できるようにすることは非常に高く評価されたサブプロセスの文字列

すべてのヘルプ内の変数です。

再び

+1

[Pythonで書式設定文字列]の可能な複製を(https://stackoverflow.com/questions/517355/string-formatting-in-python ) – ppperry

答えて

0

をありがとうはそれを考え出し:

import subprocess 
filePath = 'someFile.ext' 
localPath = r'C:\someDirectory' 
cmd = r'explorer /root,"search-ms:query=%s&crumb=folder:%s&"' 
subprocess.Popen(cmd % (filePath, local_path)) 
関連する問題