2016-06-03 5 views
0

Я не могу написать результат следующего кода в файлКак написать список в файл?

import boto3 
ACCESS_KEY= "XXX" 
SECRET_KEY= "XXX" 
regions = ['us-east-1','us-west-1','us-west-2','eu-west-1','sa-east-1','ap-southeast-1','ap-southeast-2','ap-northeast-1'] 
for region in regions: 
    client = boto3.client('ec2',aws_access_key_id=ACCESS_KEY,aws_secret_access_key=SECRET_KEY,region_name=region,) 
    addresses_dict = client.describe_addresses() 
    #f = open('/root/temps','w') 
    for eip_dict in addresses_dict['Addresses']: 
    with open('/root/temps', 'w') as f: 
     if 'PrivateIpAddress' in eip_dict: 
     print eip_dict['PublicIp'] 
     f.write(eip_dict['PublicIp']) 

Это приводит к печатая IP-адресов, но ничего не будет записано в файл, результат печати является:

22.1.14.1 
22.1.15.1 
112.121.41.41 
.... 

I просто нужно записать контент только в этом формате

ответ

1
for eip_dict in addresses_dict['Addresses']: 
    with open('/root/temps', 'w') as f: 
     if 'PrivateIpAddress' in eip_dict: 
     print eip_dict['PublicIp'] 
     f.write(eip_dict['PublicIp']) 

Вы повторно открываете файл для записи на каждой итерации цикла. Возможно, последняя итерация не имеет членов с «PrivateIpAddress» в своем dict, поэтому файл открывается, усечен и остается пустым. Запишите это так, вместо этого:

with open('/root/temps', 'w') as f: 
    for eip_dict in addresses_dict['Addresses']: 
     if 'PrivateIpAddress' in eip_dict: 
      print eip_dict['PublicIp'] 
      f.write(eip_dict['PublicIp']) 
+0

Я попытался это, по-прежнему ничего файла – PythonFreak

+0

ааа получил его, вместо of 'w' i need' a' – PythonFreak

+0

@PythonFreak нет, это неверно. «A» будет работать, но это не объясняет, почему это изменение не решает проблему, если только вы не сказали мне. – kojiro

1

открыть файл в режиме добавления

with open('/root/temps', 'a') as f: 

или объявить файл вне цикла

+0

yep true ,, и как разбить строку, чтобы на каждой итерации IP печатался в другой строке – PythonFreak

+0

concat '\ n' в конце записи – Chet

Смежные вопросы