请求是一个非常好的库.我想用它来下载大文件(> 1GB).问题是不可能将整个文件保存在内存中我需要以块的形式读取它.这是以下代码的问题
import requests
def DownloadFile(url)
local_filename = url.split('/')[-1]
r = requests.get(url)
f = open(local_filename, 'wb')
for chunk in r.iter_content(chunk_size=512 * 1024):
if chunk: # filter out keep-alive new chunks
f.write(chunk)
f.close()
return
Run Code Online (Sandbox Code Playgroud)
由于某种原因它不起作用.在将其保存到文件之前,它仍会将响应加载到内存中.
UPDATE
如果你需要一个可以从FTP下载大文件的小客户端(Python 2.x /3.x),你可以在这里找到它.它支持多线程和重新连接(它确实监视连接),它还为下载任务调整套接字参数.
我正在以“正常”模式在 Cromedrive 中编写代码并且工作正常。当我更改为无头模式时,它不会下载文件。我已经尝试了我在互联网上找到的代码,但没有用。
chrome_options = Options()
chrome_options.add_argument("--headless")
self.driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=r'{}/chromedriver'.format(os.getcwd()))
self.driver.set_window_size(1024, 768)
self.driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': os.getcwd()}}
self.driver.execute("send_command", params)
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何解决这个问题?
PS:我不一定需要使用 Chomedrive。如果它在另一个驱动器中工作,那对我来说没问题。
python selenium google-chrome selenium-chromedriver google-chrome-headless
我正在使用 python 3.5 requests 模块使用以下代码下载文件,如何使此代码“自动恢复”从部分下载的文件中下载。
response = requests.get(url, stream=True)
total_size = int(response.headers.get('content-length'))
with open(file_path + file_name, "wb") as file:
for data in tqdm(iterable = response.iter_content(chunk_size = 1024), total = total_size//1024, unit = 'KB'):
file.write(data)
Run Code Online (Sandbox Code Playgroud)
requests如果可能的话,我宁愿只使用模块来实现这一点。
当我在pandas中尝试一些代码时,bash代码wget在colab中使用如下:
import pandas as pd
!wget abc.com/sales.csv
Run Code Online (Sandbox Code Playgroud)
如果我想使用 PyCharm 下载上述互联网文件,wget 无法识别。那么我应该使用哪个命令来下载这个文件呢?
python ×4
data-science ×1
download ×1
pandas ×1
python-3.5 ×1
python-3.6 ×1
python-3.x ×1
selenium ×1
stream ×1