在Python中运行外部脚本

2024-09-26 18:14:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用subprocess.call运行PowerShell脚本,但运气不太好。在

subprocess.call(['.\ConvertPPTtoImage.ps1', path+'file.pptx'])

直接从PowerShell运行.\ConvertPPTtoImage.ps1 file.pptx可以很好地工作,但是上面的行只是在记事本中打开ConvertPPTtoImage.ps1。我尝试过其他变体(从一开始就删除.\,删除{},使用操作系统而不是subprocess.call)然后崩溃或者WindowsError: [Error 193] %1 is not a valid Win32 application

正确的方法是什么?在


Tags: path脚本iserror变体callfilesubprocess
2条回答

主要在linux机器上工作,这是我最好的猜测。听起来ConvertPPTtoImage.ps1是一个脚本,然后由powershell运行。该命令试图运行它:(a)使用ps1文件的默认程序,该程序将在记事本中打开它;或者(b)作为自身的可执行文件运行,但由于文本文件本身不是可执行文件而失败。解决方案是替换如下调用。在

subprocess.call([r'C:\path\to\powershell.exe',r'.\ConvertPPTtoImage.ps1',path+'file.pptx'])

也就是说,用参数调用powershell,告诉它要运行哪个脚本。在

另外,每当在python中使用Windows路径时,我建议在每个字符串的开头加一个r,这会告诉python忽略转义序列。由于python的转义字符和窗口的路径分隔符都是反斜杠,这就省去了很多麻烦。在

您需要调用PowerShell可执行文件本身。默认情况下,Windows将在记事本或您选择的其他文本编辑器中打开.ps1文件。作为一种安全特性,它们在默认情况下不使用PowerShell运行。在

powershell.exe -ExecutionPolicy Bypass -File c:\path\to\ConvertPPTtoImage.ps1 c:\path\to\file.pptx

相关问题 更多 >

    热门问题