python - 执行绝对路径包含空格的powershell文件

标签 python powershell subprocess

我正在尝试在 python 脚本中执行 ps1 文件。

proc = subprocess.Popen(["powershell.exe", 'F:/FOLDER/FOLDER OK/myfile.ps1'])

它停在F:/FOLDER/FOLDER,所以我添加了额外的引号,如下所示:

proc = subprocess.Popen(["powershell.exe", '"F:/FOLDER/FOLDER OK/myfile.ps1"'])

现在没有错误,但它也没有执行脚本... 有什么想法吗?

最佳答案

powershell.exe 并不假定参数自动是要执行的文件;您需要识别所有参数。使用-File开关

proc = subprocess.Popen(["powershell.exe", "-File", r"F:\FOLDER\FOLDER OK\myfile.ps1"])

r"..." 中的 r(对于 raw)会关闭转义序列处理,以便 \ 无需转义即可使用。

参见PowerShell Command Line Help在 Microsoft 文档。

PowerShell[.exe]
       [-Command { - | <script-block> [-args <arg-array>]
                     | <string> [<CommandParameters>] } ]
       [-EncodedCommand <Base64EncodedCommand>]
       [-ExecutionPolicy <ExecutionPolicy>]
       [-File <FilePath> [<Args>]]
       [-InputFormat {Text | XML}] 
       [-Mta]
       [-NoExit]
       [-NoLogo]
       [-NonInteractive] 
       [-NoProfile] 
       [-OutputFormat {Text | XML}] 
       [-PSConsoleFile <FilePath> | -Version <PowerShell version>]
       [-Sta]
       [-WindowStyle <style>]

关于python - 执行绝对路径包含空格的powershell文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49110935/

相关文章:

python - Pandas 拆分和追加

Python 嵌套循环不会继续子进程

python - 使 tkinter 标签按设定的时间间隔刷新,无需输入

powershell - 检查网址以获取特定文本,如果匹配则下载,如果名称无法解析则继续下一个

powershell - Set-AzureStorageBlobContent - 日期在冒号处截断的元数据

python - 如何使用 python 更改 Windows 的关闭消息?

python - 如何使用标签数组和对象切片的混合按列对 pandas 数据框进行切片?

java - java的iterator.remove()如何翻译成python?

python - Pytest 没有在终端中提供正确的输出

c# - 启动服务未返回有关失败的足够信息