继承我的代码。
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)任何解决方案/提示?
我不解释代码,我想你明白我想做什么
答案 0 :(得分:9)
h = os.popen(“wget -r%s”%sys.argv [1])
使用子进程模块,os.popen已过时
python有urllib,你可以考虑使用它来拥有纯python代码
有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("@","?"))