在python中的aws命令中添加双引号

在python中的aws命令中添加双引号,python,string,shell,double-quotes,Python,String,Shell,Double Quotes,下面是我需要的输出 aws cognito-idp list-users --region "us-west-2" --user-pool-id "us-west-2_TEST" --filter "email = \"test@test.com\"" --query 'Users[0].Username' --output text 我试图使用Python实现这种语法,但出现了一些语法错误。我被卡住了 aws cognito-idp list-users --region "+region+

下面是我需要的输出

aws cognito-idp list-users --region "us-west-2" --user-pool-id "us-west-2_TEST" --filter "email = \"test@test.com\"" --query 'Users[0].Username' --output text
我试图使用Python实现这种语法,但出现了一些语法错误。我被卡住了

aws cognito-idp list-users --region "+region+" --user-pool-id "+user_pool_id+" --filter \"email = \"+email+\"\" --query 'Users[0].Username' --output text
请注意,我在Shell脚本中使用了类似的语法,并且工作正常

aws cognito-idp list-users --region "$region" --user-pool-id "$userpool_id" --filter "email = \"$email\"" --query 'Users[0].Username' --output text
有人能帮我吗

这可能与其他问题类似,但我需要在命令中使用额外的双引号

更新:

我可以得到类似于“电子邮件=”的东西test@test.com“”
使用下面的命令

"aws cognito-idp list-users --region "+region+" --user-pool-id "+user_pool_id+" --filter \"email = \""+email+"\"\" --query 'Users[0].Username' --output text"
但我需要在电子邮件id的双引号前加一个反斜杠。


谢谢

尝试使用
str.format

Ex:

cmd = 'aws cognito-idp list-users --region "{0}" --user-pool-id "{1}" --filter \"email = \"{2}\" --query "{3}" --output text'.format("us-west-2", "us-west-2_TEST", "test@test.com",  Users[0].Username)
print(cmd)
"aws cognito-idp list-users --region "+region+" --user-pool-id "+user_pool_id+" --filter \"email = \\\""+email+"\\\"\" --query 'Users[0].Username' --output text"

解决方案:

cmd = 'aws cognito-idp list-users --region "{0}" --user-pool-id "{1}" --filter \"email = \"{2}\" --query "{3}" --output text'.format("us-west-2", "us-west-2_TEST", "test@test.com",  Users[0].Username)
print(cmd)
"aws cognito-idp list-users --region "+region+" --user-pool-id "+user_pool_id+" --filter \"email = \\\""+email+"\\\"\" --query 'Users[0].Username' --output text"

\\“将添加反斜杠和双引号。

您在Python字符串的开头/结尾和电子邮件转义周围缺少引号(即,它应该是
“aws cognito idp list users--region”+region+“--user pool id”+user\u pool\u id+”--filter \“email=\”“+email+”--query”用户[0].Username'--输出文本“
),但更大的问题是-为什么要将其作为字符串?如果您需要在AWS CLI中调用该命令(并且不想直接使用
boto
),请使用
子流程。检查\u output()
,将参数作为列表传递,并让Python执行必要的转义。有一个Python库,其中包括。这可能是一个比运行shell命令更好的起点。@David我正在使用bot3从s3 bucket读取一些数据。但是我如何使用boto3来运行这个
aws cli
命令呢?这值得一个单独的问题,但您可以从这里开始:它很好。也许我以后会用这个!