我试图将变量的输出重定向并写入文件,但只有输出的最后一行显示在我要写入的文件中。然而,当我打印变量时,我得到了我期望的所有行。你知道吗
rds = boto3.client('rds')
rds_instances = rds.describe_db_instances()['DBInstances']
for databases in rds_instances:
arns = ("{0}".format(databases['DBInstanceArn']))
# print (arns)
f = open('/tmp/arns', 'a')
f.write(arns)
f.close()
打印时得到多个rds arn的输出示例:
arn:aws:rds:us-east-1:222222222222:db:databasename01
arn:aws:rds:us-east-1:222222222222:db:databasename02
arn:aws:rds:us-east-1:222222222222:db:databasename03
但是,当我检查我写的文件时,只有:
arn:aws:rds:us-east-1:222222222222:db:databasename03
您应该使用
with open(filename, mode) as f:
到write to files,确保即使发生异常也能关闭它们。你知道吗一旦代码离开
with
下面的块,您的文件将自动关闭—无需手动关闭。你知道吗您可以这样重新编写代码:
您也可以将
'\n'
添加到您的写入输出-它不会自动添加。你知道吗当您打印结果时,它会在每次循环运行时打印
arns
的值。你知道吗当您将值写入文件时,它只会在循环最后一次运行时取
arns
的值。你知道吗您可以在循环之前打开文件并在循环中写入值,而不是在循环之后。然后在循环结束后关闭文件。你知道吗
相关问题 更多 >
编程相关推荐