subprocess.Popen 和相关目录
subprocess.Popen and relative directories
我正在编写脚本以使用 subprocess.Popen()
打开 notepad.exe
import subprocess
command = '%windir%\system32\notepad.exe'
process = subprocess.Popen(command)
output = process.communicate()
print(output[0])
这会引发 FileNotFoundError
是否可以 change/add 上述代码使其与相对路径一起工作?
我确实尝试 运行 从 C:\Windows> 将脚本移到那里,但再次失败。还设置了 shell=True,但也失败了。
使用 os.popen() 编写类似的脚本可以在相对路径下正常工作,无论脚本 运行 来自哪个目录,但据我了解 popen 不是前进的方向..
programming/Python 世界的早期步骤。非常感谢任何输入。
专业提示:每当您遇到要求系统执行命令的错误时,打印该命令(如果适用,还打印当前工作目录)。结果往往会让你大吃一惊。
对于你的情况,我怀疑你只是少了一个反斜杠。改用这个:
command = '%windir%\system32\notepad.exe'
在进行更改之前,尝试在分配后立即打印 command
的值。我想您会发现 "system" 中的前导 "s" 丢失了,而且错误很明显。
HTH。
使用os.path.expandvars
扩展%windir%
:
command = os.path.expandvars('%windir%\system32\notepad.exe')
结果是一个路径,然后可以传递给 subprocess.Popen
。
subprocess.Popen
不展开%windir%
等环境变量。 shell 可能但你真的不应该依赖 shell=True
来做到这一点。
您可以使用原始字符串来避免将反斜杠加倍。
command = r'%windir%\system32\notepad.exe'
我正在编写脚本以使用 subprocess.Popen()
打开 notepad.exeimport subprocess
command = '%windir%\system32\notepad.exe'
process = subprocess.Popen(command)
output = process.communicate()
print(output[0])
这会引发 FileNotFoundError
是否可以 change/add 上述代码使其与相对路径一起工作? 我确实尝试 运行 从 C:\Windows> 将脚本移到那里,但再次失败。还设置了 shell=True,但也失败了。 使用 os.popen() 编写类似的脚本可以在相对路径下正常工作,无论脚本 运行 来自哪个目录,但据我了解 popen 不是前进的方向..
programming/Python 世界的早期步骤。非常感谢任何输入。
专业提示:每当您遇到要求系统执行命令的错误时,打印该命令(如果适用,还打印当前工作目录)。结果往往会让你大吃一惊。
对于你的情况,我怀疑你只是少了一个反斜杠。改用这个:
command = '%windir%\system32\notepad.exe'
在进行更改之前,尝试在分配后立即打印 command
的值。我想您会发现 "system" 中的前导 "s" 丢失了,而且错误很明显。
HTH。
使用os.path.expandvars
扩展%windir%
:
command = os.path.expandvars('%windir%\system32\notepad.exe')
结果是一个路径,然后可以传递给 subprocess.Popen
。
subprocess.Popen
不展开%windir%
等环境变量。 shell 可能但你真的不应该依赖 shell=True
来做到这一点。
您可以使用原始字符串来避免将反斜杠加倍。
command = r'%windir%\system32\notepad.exe'