Tôi đang cố gắng tạo ra một chức năng Python làm điều tương tự như lệnh WGET này:
wget -c --read-timeout=5 --tries=0 "$URL"
>>> import wget
>>> url = '//www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'
>>> filename = wget.download[url]
100% [................................................] 3841532 / 3841532>
>> filename
'razorback.mp3'
5 - Tiếp tục từ nơi bạn rời đi nếu tải xuống bị gián đoạn.>>> import wget
>>> url = '//www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'
>>> filename = wget.download[url]
100% [................................................] 3841532 / 3841532>
>> filename
'razorback.mp3'
6 - Nếu không có dữ liệu mới đến trong hơn 5 giây, hãy từ bỏ và thử lại. Cho >>> import wget
>>> url = '//www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'
>>> filename = wget.download[url]
100% [................................................] 3841532 / 3841532>
>> filename
'razorback.mp3'
5 Điều này có nghĩa là nó sẽ thử lại từ nơi nó rời đi.>>> import wget
>>> url = '//www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'
>>> filename = wget.download[url]
100% [................................................] 3841532 / 3841532>
>> filename
'razorback.mp3'
8 - Thử lại mãi mãi.Ba đối số được sử dụng trong kết quả Tandem trong việc tải xuống không thể thất bại.
Tôi muốn sao chép các tính năng đó trong tập lệnh Python của mình, nhưng tôi không biết bắt đầu từ đâu ...
Đã hỏi ngày 21 tháng 6 năm 2014 lúc 23:46Jun 21, 2014 at 23:46
2
Ngoài ra còn có một mô -đun Python đẹp có tên
>>> import wget
>>> url = '//www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'
>>> filename = wget.download[url]
100% [................................................] 3841532 / 3841532>
>> filename
'razorback.mp3'
9 khá dễ sử dụng. Hãy nhớ rằng gói chưa được cập nhật kể từ năm 2015 và chưa thực hiện một số tính năng quan trọng, vì vậy có thể tốt hơn là sử dụng các phương pháp khác. Nó phụ thuộc hoàn toàn vào trường hợp sử dụng của bạn. Để tải xuống đơn giản, mô -đun này là vé. Nếu bạn cần phải làm nhiều hơn, có những giải pháp khác ngoài kia.>>> import wget
>>> url = '//www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'
>>> filename = wget.download[url]
100% [................................................] 3841532 / 3841532>
>> filename
'razorback.mp3'
Enjoy.
Tuy nhiên, nếu
>>> import wget
>>> url = '//www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'
>>> filename = wget.download[url]
100% [................................................] 3841532 / 3841532>
>> filename
'razorback.mp3'
9 không hoạt động [tôi đã gặp sự cố với một số tệp PDF nhất định], hãy thử giải pháp này.Chỉnh sửa: Bạn cũng có thể sử dụng tham số
1 để sử dụng thư mục đầu ra tùy chỉnh thay vì thư mục làm việc hiện tại. You can also use the >>> output_directory =
>>> filename = wget.download[url, out=output_directory]
>>> filename
'razorback.mp3'
>>> output_directory =
>>> filename = wget.download[url, out=output_directory]
>>> filename
'razorback.mp3'
1 parameter to use a custom output directory instead of current working directory.>>> output_directory =
>>> filename = wget.download[url, out=output_directory]
>>> filename
'razorback.mp3'
Đã trả lời ngày 4 tháng 2 năm 2015 lúc 4:15Feb 4, 2015 at 4:15
Blairg23Blairg23Blairg23
10,6K6 Huy hiệu vàng71 Huy hiệu bạc70 Huy hiệu đồng6 gold badges71 silver badges70 bronze badges
11
Urllib.Request nên làm việc. Chỉ cần thiết lập nó trong một vòng lặp [không hoàn thành], kiểm tra xem localfile đã tồn tại, nếu nó gửi một tiêu đề có phạm vi, chỉ định bạn đã tải xuống địa phương. Hãy chắc chắn sử dụng Read [] để nối vào LocalFile cho đến khi xảy ra lỗi.
Đây cũng có khả năng là một bản sao tải xuống Python Urllib2 không hoạt động khi mạng kết nối lại
Đã trả lời ngày 22 tháng 6 năm 2014 lúc 0:45Jun 22, 2014 at 0:45
Eugene Keugene kEugene K
3.3312 Huy hiệu vàng22 Huy hiệu bạc36 Huy hiệu Đồng2 gold badges22 silver badges36 bronze badges
4
Tôi đã phải làm một cái gì đó như thế này trên một phiên bản Linux không có các tùy chọn phù hợp được biên dịch thành WGET. Ví dụ này là để tải xuống công cụ phân tích bộ nhớ 'Guppy'. Tôi không chắc nó có quan trọng hay không, nhưng tôi giữ tên tệp đích giống như tên mục tiêu URL ...
Đây là những gì tôi nghĩ ra:
python -c "import requests; r = requests.get['//pypi.python.org/packages/source/g/guppy/guppy-0.1.10.tar.gz'] ; open['guppy-0.1.10.tar.gz' , 'wb'].write[r.content]"
Đó là một lớp lót, đây là một chút dễ đọc hơn:
import requests
fname = 'guppy-0.1.10.tar.gz'
url = '//pypi.python.org/packages/source/g/guppy/' + fname
r = requests.get[url]
open[fname , 'wb'].write[r.content]
Điều này đã làm việc để tải xuống một tarball. Tôi đã có thể trích xuất gói và tải xuống sau khi tải xuống.
EDIT:
Để giải quyết một câu hỏi, đây là một triển khai với một thanh tiến trình được in cho stdout. Có lẽ có một cách di động hơn để làm điều này mà không cần gói
>>> output_directory =
>>> filename = wget.download[url, out=output_directory]
>>> filename
'razorback.mp3'
2, nhưng điều này đã được thử nghiệm trên máy của tôi và hoạt động tốt:#!/usr/bin/env python
from clint.textui import progress
import requests
fname = 'guppy-0.1.10.tar.gz'
url = '//pypi.python.org/packages/source/g/guppy/' + fname
r = requests.get[url, stream=True]
with open[fname, 'wb'] as f:
total_length = int[r.headers.get['content-length']]
for chunk in progress.bar[r.iter_content[chunk_size=1024], expected_size=[total_length/1024] + 1]:
if chunk:
f.write[chunk]
f.flush[]
Đã trả lời ngày 14 tháng 3 năm 2016 lúc 20:44Mar 14, 2016 at 20:44
0
Một giải pháp mà tôi thường thấy đơn giản hơn và mạnh mẽ hơn là chỉ cần thực hiện một lệnh đầu cuối trong Python. Trong trường hợp của bạn:
import os
url = '//www.someurl.com'
os.system[f"""wget -c --read-timeout=5 --tries=0 "{url}""""]
Đã trả lời ngày 16 tháng 1 năm 2019 lúc 14:00Jan 16, 2019 at 14:00
Yohan Obadiayohan ObadiaYohan Obadia
2.3921 Huy hiệu vàng22 Huy hiệu bạc31 Huy hiệu đồng1 gold badge22 silver badges31 bronze badges
4
import urllib2
import time
max_attempts = 80
attempts = 0
sleeptime = 10 #in seconds, no reason to continuously try if network is down
#while true: #Possibly Dangerous
while attempts < max_attempts:
time.sleep[sleeptime]
try:
response = urllib2.urlopen["//example.com", timeout = 5]
content = response.read[]
f = open[ "local/index.html", 'w' ]
f.write[ content ]
f.close[]
break
except urllib2.URLError as e:
attempts += 1
print type[e]
Đã trả lời ngày 22 tháng 6 năm 2014 lúc 2:44Jun 22, 2014 at 2:44
PujanpujanPujan
3.0443 Huy hiệu vàng37 Huy hiệu bạc49 Huy hiệu đồng3 gold badges37 silver badges49 bronze badges
1
Đối với Windows và Python 3.x, hai xu của tôi đóng góp về việc đổi tên tệp khi tải xuống:Windows and Python 3.x, my two cents contribution about renaming the file on download :
- Cài đặt mô -đun WGET:
3>>> output_directory = >>> filename = wget.download[url, out=output_directory] >>> filename 'razorback.mp3'
- Sử dụng wget:
import wget
wget.download['Url', 'C:\\PathToMyDownloadFolder\\NewFileName.extension']
Ví dụ về dòng lệnh làm việc thực sự:
python -c "import wget; wget.download[""//cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.17.2.tar.xz"", ""C:\\Users\\TestName.TestExtension""]"
Lưu ý: 'C: \\ PathTomyDownLoadFolder \\ newfilename.extension' không bắt buộc. Theo mặc định, tệp không được đổi tên và thư mục tải xuống là đường dẫn cục bộ của bạn.
Đã trả lời ngày 18 tháng 12 năm 2019 lúc 11:07Dec 18, 2019 at 11:07
1
Đây là mã được thông qua từ Thư viện Torchvision:
>>> import wget
>>> url = '//www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'
>>> filename = wget.download[url]
100% [................................................] 3841532 / 3841532>
>> filename
'razorback.mp3'
0Nếu bạn ổn khi phụ thuộc vào thư viện Torchvision thì bạn cũng chỉ đơn giản là làm:
>>> import wget
>>> url = '//www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'
>>> filename = wget.download[url]
100% [................................................] 3841532 / 3841532>
>> filename
'razorback.mp3'
1Đã trả lời ngày 2 tháng 4 năm 2020 lúc 23:51Apr 2, 2020 at 23:51
Shital Shahshital ShahShital Shah
58.7K13 Huy hiệu vàng224 Huy hiệu bạc180 Huy hiệu Đồng13 gold badges224 silver badges180 bronze badges
Hãy để tôi cải thiện một ví dụ với các chủ đề trong trường hợp bạn muốn tải xuống nhiều tệp.
>>> import wget
>>> url = '//www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'
>>> filename = wget.download[url]
100% [................................................] 3841532 / 3841532>
>> filename
'razorback.mp3'
2Đã trả lời ngày 19 tháng 7 năm 2017 lúc 6:07Jul 19, 2017 at 6:07
EgaliciaegaliciaEgalicia
6348 Huy hiệu bạc16 Huy hiệu Đồng8 silver badges16 bronze badges
6
Dễ dàng như PY:
>>> import wget
>>> url = '//www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'
>>> filename = wget.download[url]
100% [................................................] 3841532 / 3841532>
>> filename
'razorback.mp3'
3
Đã trả lời ngày 10 tháng 8 năm 2017 lúc 5:27Aug 10, 2017 at 5:27
PD Shahpd Shahpd shah
1.2662 huy hiệu vàng12 Huy hiệu bạc24 Huy hiệu đồng2 gold badges12 silver badges24 bronze badges
1
Tensorflow làm cho cuộc sống dễ dàng hơn. Đường dẫn tập tin cung cấp cho chúng tôi vị trí của tập tin đã tải xuống.file path gives us the location of downloaded file.
>>> import wget
>>> url = '//www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'
>>> filename = wget.download[url]
100% [................................................] 3841532 / 3841532>
>> filename
'razorback.mp3'
4Đã trả lời ngày 25 tháng 10 năm 2019 lúc 4:56Oct 25, 2019 at 4:56
1