python - 循环遍历文件 1 中的变量并在文件 2 中执行
问题描述
背景:
我正在创建一个报告,该报告将发送给组织中的各个用户。
我有 3 个单独的文件来执行此操作。
该解决方案工作正常,但是它只是为列表中的最后一个用户一遍又一遍地生成相同的文件。正在保存的变量只是最后一个正在执行的变量。它应该为每个用户生成不同的文件。我不确定这是否是嵌套循环问题,但请参阅下文了解更多上下文:
文件 1) subscribers.py - 电子邮件列表:
subscriber_list = ['abe@gmail.com','obama@gmail.com','clinton@gmail.com']
文件 2) start.py - 通过订阅者循环执行第三个文件:
import subscribers
for user in subscribers.subscriber_list :
login_input = user
exec(open('produce_report.py').read())
文件 3) produce_report.py - 运行一系列基于 login_input 的逻辑,为简单起见,我只打印该值。
import subscribers
import start
login_input = start.login_input
print (start.login_input)
预期结果:
- abe@gmail.com
- obama@gmail.com
- clinton@gmail.com
结果我得到:
- clinton@gmail.com
- clinton@gmail.com
- clinton@gmail.com
解决方案
而不是导入开始,尝试import __main__
然后__main__.login_input
import __main__
只导入可执行脚本,因此第四个文件import __main__
将start.py
再次导入。最好的办法是在第四个文件中编写一个函数并传入参数。为此,您需要将函数导入produce_report
.
还有另一种选择。既然您将变量保存在 中start.py
,为什么不将变量从start.py
第四个文件中携带呢?
推荐阅读
- apache - Apache2 模块 Filebeat
- java - 什么算法用于转换 ArrayList
到 LinkedHashSet 在 JRE - android - 在移动设备中,不同的应用程序能否响应浏览器号召性用语并直接打开?
- ruby-on-rails - 如何添加额外数据以加入 factory_bot 工厂中的表
- php - SSL 例程:tls_process_server_certificate:certificate verify failed 无法启用加密
- java - 组合框更改 JTable
- java - 休眠与 mysql 覆盖 pk
- node.js - 如何使用 nginx 将我的域连接到我的节点应用程序
- reactjs - 反应 API 映射问题
- java - 我怎样才能让我的 PrimeNumber 生成器工作?