os模块为什么不运行wget cmd命令?

时间:2019-06-05 19:55:19

标签: python python-requests wget python-os

我正在尝试从网络上下载一个zip文件,并尝试使用wget -O fileName urlLink通过控制台命令下载它,但是在尝试代码时,CMD打开一秒钟然后关闭,我找不到文件放在任何地方。

我尝试使用其他方式下载文件,但它们返回错误403。在CMD中使用wget可以下载正确的文件,但不能在python代码中下载。

def gotoDownload(link):
    try:
        with requests.Session().get(link) as download:
            if isUrlOnline(download):
                soup = BeautifulSoup(download.content, 'html.parser')
                filtered = soup.find_all('script')
                zip_file_url = re.search(r"('http.*?')", filtered[17].text).group().replace("'", "")

                os.system("wget -O {0} {1}".format('CreatureFinalZTL.zip', zip_file_url))

期待下载文件 而是不下载任何内容。

3 个答案:

答案 0 :(得分:1)

有些事情可能会在这里有所帮助(它可能会或可能不会解决您的问题,因为它取决于您计算机的设置和配置)。首先,我建议的一件事是在路径上更具体。您可以在wget行中使用绝对路径,如下所示:

"wget -O {0} {1}".format('/path/to/output/dir/CreatureFinalZTL.zip', zip_file_url)

如果Python环境无法在您期望的目录中运行,这通常会很有帮助。或者,您可以使用以下python命令强制目录:

os.chdir( path )

然后,您可以使用相对路径进行操作而不必担心。我建议的第二件事是确认网址就是您所期望的。像这样打印出来:

print( zip_file_url )

听起来可能很愚蠢,但重要的是要确认您的正则表达式运行正常。

答案 1 :(得分:1)

改为使用subprocess

import subprocess

...

subprocess.run(["wget",  "-O", 'CreatureFinalZTL.zip', zip_file_url])

这避免了您希望运行的命令涉及任何shell。

答案 2 :(得分:0)

已修复,必须将wget重新添加到Windows上的PATHS。