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


0

继承人我的代码。

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() 

运行它,就像这条巨蟒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)任何解决方案/技巧?

我不解释代码,我想你明白我尝试做

1

我想你想:

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

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,只是做简单明了串孔卡tenation:

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

9
  1. H = os.popen( “wget的-r%的” %sys.argv中[1])

  2. 使用子模块,os.popen是过时

  3. Python有urllib的,你可以考虑使用有纯Python代码

  4. 有pycurl