我是python的新手,我见过的例子不回答我的问题。
我试图读入两个文件,主机和域名列表,并将域列表的内容附加到主机上,添加句点并打印结果。
我已经为第一台主机正确执行了此操作,但只打印了具有句点的下两台主机。
h = open('hosts', 'r')
s = open('domainlist', 'r')
for host in h.read().split():
for domain in s.read().split('\n'):
print host+"."+domain
h.close()
s.close()
这打印出以下
google.gov
google.com
google.net
google.org
google.co.uk
google.com.au
google.com.sg
yahoo.
dogpile.
'hosts'文件包含以下主机
google
yahoo
dogpile
“域名列表”包含以下内容
gov
com
net
org
co.uk
com.au
com.sg
答案 0 :(得分:2)
所有这些分裂和阅读是什么?
对文件进行简单迭代不需要使用split()
也不需要使用read()
- 您可以直接在文件对象上进行迭代。我还建议使用with
:
with open('hosts') as h, open('domainlist') as s:
for host in h:
for domain in s:
print '{}.{}'.format(host.strip(), domain.strip())
s.seek(0)
请注意使用seek(0)
返回每个主机的域文件的开头。
<强>输出强>
google.gov google.com google.net google.org google.co.uk google.com.au google.com.sg yahoo.gov yahoo.com yahoo.net yahoo.org yahoo.co.uk yahoo.com.au yahoo.com.sg dogpile.gov dogpile.com dogpile.net dogpile.org dogpile.co.uk dogpile.com.au dogpile.com.sg
使用itertools.product()
的另一种方式:
from itertools import product
with open('hosts') as h, open('domainlist') as s:
print '\n'.join('.'.join(x.strip() for x in t) for t in product(h, s))