为什么相同的powershell命令运行在powershell控制台,而不是使用os.system?



我想在Python脚本中包含一个创建7zip存档的命令。因为我在Windows上工作,所以我需要将命令传递给powershell控制台。我计划用os.system来做(我知道这不是最好的方法,我应该使用subprocess,但我真的只需要一个快速修复,在这种情况下学习使用新模块对我来说不是时间有效的)。如果从powershell控制台

运行,下面的命令可以工作
&'C:\Program Files\7-Zip\7z' a -mx=0 X:/myarch.zip X:/myarch

所以我在python中重新创建相同的字符串,像这样:

cmdl = r"&'C:\Program Files\7-Zip\7z' a -mx=0 X:/myarch.zip X:/myarch"

字符串解释如下:

"&'C:\\Program Files\\7-Zip\\7z' a -mx=0 X:/myarch.zip X:/myarch"

现在,如果我在powershell控制台中复制粘贴上述字符串,它将正常运行。但是,如果我在python中使用os.system(cmdl)运行它,我得到以下错误

"The filename, directory name, or volume label syntax is incorrect"

为什么会出现这种情况?我该如何解决这个问题?

os.system意味着执行cmd命令,cmd命令可以在powershell中运行,也许毕竟powershell有点先进,但我确信你不能在powershell中运行cmd命令,因此你的代码不工作。

然而,从执行powershell命令的创造性解决方案使用python)将命令写入.ps文件(powershell脚本),然后使用os.startfile()(使用此代码:os.startfile("script.ps"))运行它

相关内容

  • 没有找到相关文章

最新更新