gpt4 book ai didi

python - 为什么 Python 连接列表中的字符串而不是遍历它们?

转载 作者:太空宇宙 更新时间:2023-11-03 11:42:51 24 4
gpt4 key购买 nike

在 Python CGI 脚本中,我有字符串列表,它们是散列的键:

APPENDIX_WEBSITES = ['CJSHayward']
MAIN_WEBSITES = ['Alfresco',
'Bible',
'Fathers',
'MyCollab',
'Koha',
'MediaWiki',
'Moodle',
'RequestTracker',
'SuiteCRM',
'TikiWiki',
'Wordpress']
# The variable "data" is populated with a hash containing all above entries as keys.
sys.stderr.write(repr(MAIN_WEBSITES) + '\n')
sys.stderr.write(repr(APPENDIX_WEBSITES) + '\n')
sys.stderr.write(repr(MAIN_WEBSITES + APPENDIX_WEBSITES) + '\n')
for website in MAIN_WEBSITES + APPENDIX_WEBSITES:
sys.stderr.write(website)

Apache日志如实记录:

[Tue Aug 08 16:25:34.266769 2017] [cgi:error] [pid 16429] [client 127.0.0.1:40600] AH01215: ['Alfresco', 'Bible', 'Fathers', 'MyCollab', 'Koha', 'MediaWiki', 'Moodle', 'RequestTracker', 'SuiteCRM', 'TikiWiki', 'Wordpress']: /usr/local/websites/home/www/configure/index.cgi, referer: http://localhost/[Tue Aug 08 16:25:34.267050 2017] [cgi:error] [pid 16429] [client 127.0.0.1:40600] AH01215: ['CJSHayward']: /usr/local/websites/home/www/configure/index.cgi, referer: http://localhost/[Tue Aug 08 16:25:34.267268 2017] [cgi:error] [pid 16429] [client 127.0.0.1:40600] AH01215: ['Alfresco', 'Bible', 'Fathers', 'MyCollab', 'Koha', 'MediaWiki', 'Moodle', 'RequestTracker', 'SuiteCRM', 'TikiWiki', 'Wordpress', 'CJSHayward']: /usr/local/websites/home/www/configure/index.cgi, referer: http://localhost/[Tue Aug 08 16:25:34.267490 2017] [cgi:error] [pid 16429] [client 127.0.0.1:40600] AH01215: AlfrescoAlfrescoBibleBibleFathersFathersMyCollabMyCollabKohaKohaMediaWikiMediaWikiMoodleMoodleRequestTrackerRequestTrackerSuiteCRMSuiteCRMTikiWikiTikiWiki: /usr/local/websites/home/www/configure/index.cgi, referer: http://localhost/

我很惊讶它似乎在单个字符串上迭代一次(列表的冗余串联),而不是在 repr 似乎识别为字符串列表的内容上迭代,这是我的意图。

如何让循环遍历“Alfresco”、“Bible”等,直至“CJSHayward”?

最佳答案

正如评论者所指出的,您必须将换行符 (\n) 附加到 website 以便每个网站都出现在 Apache 日志中的自己的行中。

for website in MAIN_WEBSITES + APPENDIX_WEBSITES:
sys.stderr.write(website + '\n')

这将解决您的问题。但是,您可能有兴趣了解为什么这可以解决问题

期望对 sys.stderr.write 的每次调用都会在日志中产生自己的行,这并不疯狂。 不是这种情况的原因是 sys.stderr 是一个流。流是对在某处发送的数据的抽象。在这种情况下,sys.stderr.write 写入 到标准错误流,而您的 Apache 日志从标准错误流读取。 Apache 日志不知道您调用了多少次 sys.stderr.write。它只知道它可以在流中看到什么。例如,Apache 日志不可能知道之间的区别

sys.stderr('HelloWorld')

sys.stderr('Hello')
sys.stderr('World')

在这两种情况下,Apache 日志(以及其他从标准错误中读取的应用程序)只会看到字符流 'HelloWorld'因此,Apache 日志必须使用换行符 (\n) 将标准错误流分成不同的行。

关于python - 为什么 Python 连接列表中的字符串而不是遍历它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45570254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com