如何使用subprocess.Popen将变量传递给字符串

时间:2017-07-14 00:15:50

标签: python

我正在尝试编写一个搜索我的网络卷并返回路径和文件列表的脚本。然后,我想在运行Windows资源管理器搜索的子进程中使用该列表,允许用户将文件从搜索浏览器拖放到任何地方。我挂断的地方是将变量(列表)传递给子流程字符串。

示例:

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 个答案:

答案 0 :(得分: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))