相关疑难解决方法(0)

使用请求在python中下载大文件

请求是一个非常好的库.我想用它来下载大文件(> 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),你可以在这里找到它.它支持多线程和重新连接(它确实监视连接),它还为下载任务调整套接字参数.

python download stream python-requests

348
推荐指数
6
解决办法
27万
查看次数

监控文件/目录的内容?

我正在寻找一个跨平台文件监控python包?我知道可以使用pywin32监视windows上的文件,并且有些软件包可以在Linux/Unix上运行,但是有人知道跨平台的吗?

python filesystems monitoring cross-platform file

56
推荐指数
2
解决办法
8万
查看次数

检查并等待文件存在以进行读取

我需要等到文件创建然后读入.我有以下代码,但确定它不起作用:

import os.path
if os.path.isfile(file_path):
    read file in
else:
    wait
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

python

44
推荐指数
2
解决办法
6万
查看次数

如何查看目录以进行更改?

在python核心中找不到任何东西来做这件事.任何人都可以推荐一个库或"电池"来做到这一点?理想情况下,我希望这是可移植的,但如果它只适用于Unix(我的服务器),那就没关系.

python filesystemwatcher

21
推荐指数
2
解决办法
6万
查看次数

Selenium(Python) - 等待下载过程使用Chrome网络驱动程序完成

我通过chromewebdriver(windows)使用selenium和python,以便自动执行从不同页面下载大量文件的任务.我的代码有效,但解决方案远非理想:下面的函数点击启动java脚本函数的网站按钮,生成PDF文件然后下载它.

我不得不使用一个静态等待,以等待下载完成(丑陋的),我不能为了验证检查文件系统时,下载完成,因为我使用多线程(下载来自不同页面的文件很多的一次)并且文件的名称也是在网站本身动态生成的.

我的代码:

def file_download(num, drivervar):
Counter += 1
    try:
        drivervar.get(url[num])
        download_button = WebDriverWait(drivervar, 20).until(EC.element_to_be_clickable((By.ID, 'download button ID')))
        download_button.click()
        time.sleep(10) 
    except TimeoutException: # Retry once
        print('Timeout in thread number: ' + str(num) + ', retrying...')
..... 
Run Code Online (Sandbox Code Playgroud)

是否可以在webdriver中确定下载完成?我想避免使用time.sleep(x).

非常感谢.

selenium python-3.x selenium-chromedriver

9
推荐指数
4
解决办法
9102
查看次数

如何使用Chrome中的Selenium + Python绑定控制文件下载

在哪里可以找到描述我可以与Selenium和Chrome网络浏览器一起使用的选项的文档?我想在Web浏览器中打开一个链接(获取凭据)但不要下载相应的文件(.pdf或.tiff或.jpeg).我在Windows 7笔记本电脑上使用Python 2.7,selenium 3.0.1和Chrome版本54.0.2840.99(以及chromedriver.exe).

# Chrome web browser.
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')  
#options.add_argument('--disable-download-notification') #doesn't seems to work 
#options.add_experimental_option("prefs", {"download.default_directory","C:\Users\xxx\downloads\Test"}) # doesn't work
#options.add_experimental_option("prefs", {"download.prompt_for_download": False}) # doesn't seems to work
#options.add_experimental_option("prefs", {'profile.default_content_settings': {'images': 2}})# this will disable image loading in the browser
options.add_argument("user-agent="+user_agent_profile)
driver_main = webdriver.Chrome(chrome_options=options)

# Opening the web application portail.
driver_main.get("https://my_link")
Run Code Online (Sandbox Code Playgroud)

我找到了很多关于这个主题的讨论,但没有一个解决方案有效.例如:

add_experimental_option("prefs", {"download.default_directory","C:\Users\xxx\downloads\Test"})
Run Code Online (Sandbox Code Playgroud)

不适合我.

同样的:

add_experimental_option("prefs", {"download.prompt_for_download": False})
Run Code Online (Sandbox Code Playgroud)

(我也尝试"假").

而:

add_argument("user-agent="+user_agent_profile)
Run Code Online (Sandbox Code Playgroud)

似乎工作!

我不确定是什么问题

我得到的问题是,每当我打开名称文件(1)文件(2)....文件(99)的链接时,它开始下载文件,然后从100开始,它会打开一个弹出窗口"另存为" .所以我想要么根本不下载文件或者能够将它移动到"回收站"中的特定文件夹中.

如何找到与add_argument和add_argument一起使用的选项?我试着看看Chrome://关于/但我看不到直接的信件.

非常感谢.

干杯.

法比安.

google-chrome file download python-2.7 selenium-webdriver

8
推荐指数
1
解决办法
2万
查看次数

重命名下载的文件selenium

我正在使用selenium从此页面自动下载csv格式的文件:

https://catalog.data.gov/dataset?tags=crime

这是我正在使用的代码:

profile = webdriver.FirefoxProfile()
profile.set_preference("browser.download.folderList", 2)
profile.set_preference("browser.download.manager.showWhenStarting", False)
profile.set_preference("browser.download.dir", '/home/luis/Desktop/data/')
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/csv")

driver = webdriver.Firefox(firefox_profile=profile)
driver.get(url)
time.sleep(2)
download_button = driver.find_element_by_xpath('//*[@id="content"]/div[2]/div[2]/section[1]/div[2]/ul/li[14]/div/ul/li[1]/a')
download_button.click()
Run Code Online (Sandbox Code Playgroud)

这里设置了下载文件夹:

profile.set_preference("browser.download.dir", '/home/luis/Desktop/data/')
Run Code Online (Sandbox Code Playgroud)

如何选择保存文件的名称?可以是下载时定义的名称吗?

我的意思是这样的:

For name in names:
    download_button = driver.find_element_by_xpath('//*[@id="content"]/div[2]/div[2]/section[1]/div[2]/ul/li[14]/div/ul/li[{}]/a'.format(name))
    download_button.click()
    save_file_as(name)
Run Code Online (Sandbox Code Playgroud)

python selenium web-scraping

5
推荐指数
1
解决办法
7225
查看次数