这是我在这里的第一篇文章,所以我希望我不会问得太糟。
我最近开始自学python(3),并在此网站上找到了很多解决问题的方法,但是现在我陷入了没有解决方法的问题。 当我想将系统命令的输出写入文件时,它会截断它的第一行,我已经将其提取。
file.write("Mailserver: \n \n")
os.system("dig" + " " + domain + " " + "MX | grep MX >> %s" % filename)
如果以google.com为例,我最终将其放置在文件中:
le.com.
google.com. 600 IN MX 50 alt4.aspmx.l.google.com.
google.com. 600 IN MX 30 alt2.aspmx.l.google.com.
google.com. 600 IN MX 20 alt1.aspmx.l.google.com.
google.com. 600 IN MX 40 alt3.aspmx.l.google.com.
而输出应为
; <<>> DiG 9.11.5-P1-1-Debian <<>> google.com MX
;google.com. IN MX
google.com. 262 IN MX 40 alt3.aspmx.l.google.com.
google.com. 262 IN MX 10 aspmx.l.google.com.
google.com. 262 IN MX 20 alt1.aspmx.l.google.com.
google.com. 262 IN MX 30 alt2.aspmx.l.google.com.
google.com. 262 IN MX 50 alt4.aspmx.l.google.com.
我还让我的脚本运行以下命令,以确保它掌握了正确的内容:
file.write("Mailserver: \n \n")
os.system("dig" + " " + domain + " " + "MX | grep MX >> %s" % filename)
os.system("dig" + " " + domain + " " + "MX | grep MX")
我添加了最后一行以打印出dig的结果,从而给出了正确的结果,而上面的行仍然仅将剪切的文本输入了我定义的文件中。
有人对此有解决方案或想法吗?我有点困扰我。
答案 0 :(得分:0)
看起来,我相信您的问题会发生,因为您使用os.system
执行命令以写入 open 文件。因此,您需要在运行命令之前关闭文件。
所以,而不是
file.write("Mailserver: \n \n")
os.system("dig" + " " + domain + " " + "MX | grep MX >> %s" % filename)
您需要做到:
file.write("Mailserver: \n \n")
file.close() #close the file
os.system("dig" + " " + domain + " " + "MX | grep MX >> %s" % filename)
file = open('%s' % filename, 'a') #open it again