Python os.system附加到首字母的文件剪切

时间:2019-01-29 07:54:18

标签: python python-3.x

这是我在这里的第一篇文章,所以我希望我不会问得太糟。

我最近开始自学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的结果,从而给出了正确的结果,而上面的行仍然仅将剪切的文本输入了我定义的文件中。

有人对此有解决方案或想法吗?我有点困扰我。

1 个答案:

答案 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