gpt4 book ai didi

python - 使用Python的Popen将Python变量传递给Powershell参数

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:13 25 4
gpt4 key购买 nike

我正在使用 Python 的子进程 Popen 在 Python 脚本中调用 Powershell 脚本。 Powershell 脚本需要两个输入参数:-FilePath-S3Key。它将文件上传到AWS S3服务器。如果我传入硬编码字符串,脚本就会起作用。

os.Popen([r'C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe','-ExecutionPolicy','RemoteSigned','./Upload. ps1 -FilePath\"C:\TEMP\test.txt\"-S3Key\"mytrialtest/test.txt\"'])

但是,如果我尝试传入 Python 字符串变量,Powershell 脚本会出错,提示找不到文件名变量指定的文件。

filename  = 'C:\TEMP\test.txt'
uploadkey = 'mytrialtest/test.txt'

os.Popen([r'C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe','-ExecutionPolicy','RemoteSigned','./Upload. ps1 -FilePath\"文件名\"-S3Key\"上传 key \"'])

任何帮助将不胜感激。谢谢。

最佳答案

我知道,这是一个老问题,所以这适合那些通过谷歌找到这个问题的人:

评论中提到的解决方案存在一些风险(字符串注入(inject)),如果涉及特殊字符,可能无法工作。更好:

import subprocess
filename = r'C:\TEMP\test.txt'
uploadkey = 'mytrialtest/test.txt'
subprocess.Popen(['powershell',"-ExecutionPolicy","RemoteSig‌​ned","-File", './Upload.ps1', '-FilePath:', filename , '-S3Key:', uploadkey])

注意附加到参数名称的 : - 在大多数情况下,没有 : 也可以工作,但如果值以破折号开头,则它将失败:

关于python - 使用Python的Popen将Python变量传递给Powershell参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19460680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com