【发布时间】:2019-04-03 16:03:20
【问题描述】:
我从 python 中的函数返回一个变量。
当我尝试在另一个函数中检索变量时,它会再次打印出原始函数的打印语句。
这是我的代码:
user_name = 'my_user'
kms_cleint = 'client_info'
aws_account = 'company-account'
def create_kms_key(user_name, kms_client):
print("****************************************************************")
print(" Create KMS Key for %s " % user_name)
print("****************************************************************")
kms_key_id = 5
return kms_key_id
def store_secret(user_name, kms_client, secrets_client, aws_account):
print("****************************************************************")
print(" Store Secret for %s for AWS account: %s " % (user_name, aws_account))
print("****************************************************************")
f = open(os.devnull,"w")
kms_key_id = create_kms_key(user_name, kms_client).set_log_stream(f)
我的输出:
****************************************************************
Create KMS Key for user35
****************************************************************
****************************************************************
Store Secret for user35 for AWS account: company-account
****************************************************************
****************************************************************
Create KMS Key for user35
****************************************************************
我试图避免再次打印出 create_kms_key 函数输出。
我在调用 create_kms_key 函数时尝试将输出重定向到 /dev/null 时收到此错误:
AttributeError: 'int' object has no attribute 'set_log_stream'
如何防止 create_kms_key 函数再次打印它的输出?
【问题讨论】:
-
看起来这可能已在其他地方得到回答:stackoverflow.com/questions/6735917/…
-
谢谢。我从那个确切的堆栈溢出链接尝试接受的解决方案,但没有奏效。那是在上面的代码中。但是我确实在同一个线程中找到了另一个解决方案。那使用上下文库。我使用 ` 与 contextlib.redirect_stdout(None): kms_key_id = create_kms_key(user_name, kms_client)` 有效。谢谢!
-
我的错,没有仔细阅读您的问题......对不起!
-
哈哈!没关系,伙计。不管怎么说,还是要谢谢你。 :)
标签: python