在python中使用wget(错误代码帮帮我)

时间:2009-02-21 23:32:25

标签: python

继承我的代码。

import os, sys
if len(sys.argv) != 2:
     sys.exit(1)

h = os.popen("wget -r %s") % sys.argv[1]
fil = open("links.txt","w")
dir = os.listdir("%s") % sys.argv[1]

for file in dir:
     print file.replace("@","?")
     fil.write("%s/"+file.replace("@","?")) % sys.argv[1]
     fil.write("\n")
h.close()

运行它,就像这个python project.py http://google.com

给我错误代码。

1.py:5 RuntimeWarning: tp_compare didnt return -1 or -2 for exception
h = os.popen("wget -r %s") % sys.argv[1]
Traceback (most recent call last):
File "1.py" line 5, in <module>
h = os.popen("wget -r %s") % sys.argv[1]
TypeError: unsupported operand type<s> for %: 'file' and 'str'

我出了什么问题。 (还在学习python)任何解决方案/提示?

我不解释代码,我想你明白我想做什么

3 个答案:

答案 0 :(得分:9)

  1. h = os.popen(“wget -r%s”%sys.argv [1])

  2. 使用子进程模块,os.popen已过时

  3. python有urllib,你可以考虑使用它来拥有纯python代码

  4. 有pycurl

答案 1 :(得分:1)

我想你想要:

h = os.popen("wget -r %s" % sys.argv[1])

答案 2 :(得分:1)

您将%运算符放在错误的位置:您需要将其直接放在格式字符串之后:

h = os.popen("wget -r %s" % sys.argv[1])
...
dir = os.listdir("%s" % sys.argv[1])
...
fil.write(("%s/"+file.replace("@","?")) % sys.argv[1])

或者,由于您只是使用%s,只需进行简单和简单的字符串连接:

h = os.popen("wget -r " + sys.argv[1])
...
dir = os.listdir(sys.argv[1])
...
fil.write(sys.argv[1] + "/" + file.replace("@","?"))