Utiliser wget en python (Code d'erreur Aidez-moi)


0

Voici mon code.

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

courir le, comme ceci python project.py http://google.com

me donne le code d'erreur.

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' 

Qu'est-ce qui ne va pas? (Apprendre encore Python) Toute solution/conseil?

Je n'expliquer le code, je pense que vous comprenez ce que im essayant de faire

1

Je pense que vous voulez:

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

1

Vous mettez l'opérateur % au mauvais endroit: vous devez mettre directement après la chaîne de format:

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

Sinon, puisque vous utilisez juste %s, il suffit de chaîne simple et simple conca 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% s" % s sys.argv [1])

  2. utiliser le module de sous-processus, os.popen est obsolète

  3. python a urllib, vous pouvez envisager d'utiliser que pour avoir pur code python

  4. il y a pycurl