Использование wget в python (код ошибки, помогите мне) - PullRequest
0 голосов
/ 22 февраля 2009

Вот мой код.

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 ]

9 голосов
/ 22 февраля 2009
  1. h = os.popen ("wget ​​-r% s"% sys.argv [1])

  2. использовать модуль подпроцесса, os.popen устарел

  3. В python есть urllib, вы можете использовать его для получения чистого кода Python

  4. есть пикур

1 голос
/ 22 февраля 2009

Вы ставите оператор % в неправильном месте: вам нужно поместить его сразу после строки формата:

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("@","?"))
1 голос
/ 22 февраля 2009

Я думаю, что вы хотите:

h = os.popen("wget -r %s" % sys.argv[1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...