在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
似乎识别为字符串列表的字符串上迭代,这正是我的意图。你知道吗
如何让循环通过“CJSHayward”遍历“Alfresco”、“Bible”等?你知道吗
正如评论员所指出的,您必须在
\n
后面附加一个换行符(website
),以便每个网站在Apache日志中显示在自己的行上。你知道吗那将解决你的问题。但是,您可能有兴趣知道为什么这解决了问题。你知道吗
期望对
sys.stderr.write
的每个调用都会在日志中产生自己的行,这并不疯狂。这种情况之所以不是,是因为sys.stderr
是一个流。流是对发送到某处的数据的抽象。在本例中,sys.stderr.write
将写入标准错误流,而Apache日志从标准错误流读取。Apache日志不知道您调用了sys.stderr.write
多少次。它只知道在小溪里能看到什么。例如,Apache日志不可能知道以及
在这两种情况下,apachelog(以及其他从标准错误读取的应用程序)只看到字符流
'HelloWorld'
。因此,Apache log必须使用换行符(\n
)将标准错误流划分为单独的行。相关问题 更多 >
编程相关推荐