嗨,当使用for循环输入实例id时,我遇到了一个错误。下面是我的代码和错误。
代码只是将所有实例is放在一个文件中,我在for循环中使用该文件来获得一个描述实例输出。
格式似乎很好,当我手动输入实例id时,它工作得很好。让我知道
#!/usr/bin/python3
import boto3
import csv
ec2_re = boto3.resource('ec2')
ids= [instance.id for instance in ec2_re.instances.all()]
with open('ids.txt', 'w') as file_handler:
for id in ids:
file_handler.write("'{}'\n".format(id))
ec2 = boto3.client('ec2', region_name='us-east-1')
INSTANCE_ID = open("ids.txt", "r") #need to loop thru this
for x in INSTANCE_ID:
result = []
response = ec2.describe_instances(
InstanceIds=[
x
]).get('Reservations')错误
Traceback (most recent call last):
File "./excel_new.py", line 17, in <module>
x
File "/usr/local/lib/python3.7/site-packages/botocore/client.py", line 514, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/usr/local/lib/python3.7/site-packages/botocore/client.py", line 934, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (InvalidInstanceID.Malformed) when calling the DescribeInstances operation: Invalid id: "'i-03b6908c79e0dd9dd'发布于 2022-09-07 19:44:30
在没有多余引号的情况下编写实例ID。例如:
file_handler.write("{}\n".format(id))在以后如何读取文本文件中有一个次要问题。您需要从包含实例ID的文本行中删除换行符。例如:
with open("ids.txt", "r") as fp:
for id in [line.rstrip() for line in fp.readlines()]:
print(id)下面是一个更完整的示例,它既写入又读取实例ID:
ids = ["id-12345", "id-23456", "id-34567"]
with open("ids.txt", "w") as fp:
for id in ids:
fp.write(f"{id}\n")
with open("ids.txt", "r") as fp:
for id in [line.rstrip() for line in fp.readlines()]:
print(id)因为Python中的文件对象是迭代器,所以还可以使用:
for id in [line.rstrip() for line in open("ids.txt", "r")]:
print(id)https://stackoverflow.com/questions/73640611
复制相似问题