Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python os.system附加到第一个字母的文件剪切_Python_Python 3.x - Fatal编程技术网

Python os.system附加到第一个字母的文件剪切

Python os.system附加到第一个字母的文件剪切,python,python-3.x,Python,Python 3.x,这是我在这里的第一篇帖子,所以我希望,我不会问得太糟糕 我最近开始自学python(3),并在这个网站上找到了很多解决问题的方法,但现在我陷入了一个没有解决方案的问题。 当我想把一个系统命令的输出写入一个文件时,它会切断它的第一行,这是我用灰色标出的 file.write("Mailserver: \n \n") os.system("dig" + " " + domain + " " + "MX | grep MX >> %s" % filename) 如果我以google.c

这是我在这里的第一篇帖子,所以我希望,我不会问得太糟糕

我最近开始自学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.
我添加了最后一行来打印挖掘的结果,这给出了一个正确的结果,而上面的一行仍然只给出了我定义的文件中的剪切文本


有人对此有解决方案或想法吗?我有点被我的问题缠住了。

听着,我相信你的问题是因为你执行了一个命令,使用
os.system
写入一个打开的文件。因此,您需要在运行命令之前关闭该文件

因此,与其

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

您打开
文件的模式是什么??是
w
还是
a
?file=open(“%s”%filename,“w+”)@anwarvicuse
a
而不是
w+
:)这样做了,现在它添加了整个文本,但将其放在文件的开头。有没有办法让我把它放在文件的末尾呢?请你把整个代码都发出来好吗?谢谢:)还有几千行要写,但我真的很喜欢python。
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