在变量内调用多个字符串

时间:2019-02-15 23:31:29

标签: python-3.x amazon-web-services

Python在这里擦洗。 我还在学习python,所以很抱歉。 我试图创建一个Dict(我认为),然后将其表现为一个名为fileshare的变量,然后要调用名为fileshareARN的变量中的每个条目。因此,基本上,我希望在AWS ARN内部调用每个共享。例如,我希望每次调用share-A,share-B等。我想我需要设置一个函数或IF语句,但我不确定。

import boto3

client = boto3.client('storagegateway')
fileshare = [share-A, share-B, share-C, share-D]

response = client.refresh_cache(
    FileShareARN='arn:aws:storagegateway:us-west-1:AWS-ID:share/{Fileshare-variable, share-ID should go here}.format',
    FolderList=['/'],
    Recursive=True
)

2 个答案:

答案 0 :(得分:2)

您非常亲密!几点提示可以为您的Python之旅提供帮助:

  • Python不允许使用带连字符的变量名,因为连字符是用于减法的保留运算符。您只将它们列为占位符,但认为了解这些信息将很有帮助。

  • H3listsarrays在Python中都是不同的数据结构。您可以在https://docs.python.org/3/tutorial/datastructures.html中详细了解它们,但是对于您的特定用例,如果您只是尝试存储变量的集合并对其进行迭代,则列表或数组可以很好地工作(尽管可以使用字典) )。


在Python中,dictionarieslists是可迭代的,这意味着它们具有内置函数,可以自然地对其进行迭代以依次访问其构成值。

我们来看一个使用以下数组的示例: arrays

在其他语言中,您可能习惯于使用以下语法定义自己的循环:

fruits = ['apples','bananas','oranges']

Python可以更轻松地启用相同的功能。

for (int i = 0; i < sizeOf(fruits); i++)
{
   print(fruits[i]);
}

这里,循环中术语for item in fruits: print(item) 的范围等于数组中当前索引(item)处的值。

现在,要为您的示例执行相同的功能,我们可以使用相同的技术遍历您的ARN列表:

fruits

更改了文件共享中的占位符变量后,我用import boto3 client = boto3.client('storagegateway') fileshare = [shareA, shareB, shareC, shareD] for path in fileshare: response = client.refresh_cache( FileShareARN='arn:aws:storagegateway:us-west-1:AWS-ID:share/'+path, FolderList=['/'], Recursive=True ) 循环包装了现有的响应变量执行,并对添加到for变量末尾的字符串做了些微更改。

希望这会有所帮助,欢迎使用Python!

答案 1 :(得分:0)

进行了更多研究,发现f.string格式似乎使python的生活变得容易。另外,由于我是在AWS Lambda中部署它的,所以我添加了一个处理程序。

#!/usr/bin/env python3

import boto3
def default_handler( event, context ):
    print(boto3.client('sts').get_caller_identity())

    client = boto3.client('storagegateway')
    fileshare = ['share-A', 'share-B', 'share-C', 'share-D']

for path in fileshare:
    response = client.refresh_cache(
        FileShareARN = f"arn:aws:storagegateway:us-west-1:ARN-ID:share/{path}",
        FolderList=['/'],
        Recursive=True
    )
    print(response)

default_handler( None, None )