跟老吕看AI 2024-05-30 14:12 采纳率: 18.2%
浏览 13
已结题

python代码编写

写一段python代码读取data.csv文件,读取url并逐条下载改文件,要求按百分比下载文件进度。
请使用以下示例数据编写以上代码。
id,url
9998989,https://www.kaggle.com/datasets/imsparsh/musicnet-dataset/download?datasetVersionNumber=1
  • 写回答

15条回答 默认 最新

  • 阿里嘎多学长 2024-05-30 14:12
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    要实现这个功能,你可以使用Python的csv模块来读取CSV文件,使用requests库来下载文件,并使用tqdm库来显示下载进度。以下是一段示例代码:

    import csv
    import requests
    from tqdm import tqdm
    
    # 定义下载文件的函数
    def download_file(url, filename):
        response = requests.get(url, stream=True)
        total_size = int(response.headers.get('content-length', 0))
        block_size = 1024  # 1 Kibibyte
    
        progress_bar = tqdm(total=total_size, unit='iB', unit_scale=True)
        with open(filename, 'wb') as file:
            for data in response.iter_content(block_size):
                progress_bar.update(len(data))
                file.write(data)
        progress_bar.close()
    
        if total_size != 0 and progress_bar.n != total_size:
            print("ERROR, something went wrong")
    
    # 读取CSV文件并下载文件
    def main():
        with open('data.csv', newline='') as csvfile:
            reader = csv.reader(csvfile)
            next(reader)  # 跳过标题行
            for row in reader:
                url = row[1]
                filename = url.split('/')[-1]  # 假设文件名是URL的最后一部分
                download_file(url, filename)
                print(f"Downloaded {filename}")
    
    if __name__ == "__main__":
        main()
    

    这段代码首先定义了一个download_file函数,它接受一个URL和文件名,然后使用requests库以流的方式下载文件,并使用tqdm库显示下载进度。

    然后在main函数中,代码打开data.csv文件,读取每一行,并调用download_file函数来下载文件。

    要运行这段代码,你需要安装requeststqdm库。你可以使用以下命令来安装它们:

    pip install requests tqdm
    

    请注意,示例中提供的URL是指向Kaggle的一个页面,而不是直接指向可下载的文件。你需要确保URL是指向可以直接下载的文件,否则requests.get将不会返回文件内容。

    参考资料:

    • Requests库官方文档:https://docs.python-requests.org/en/latest/
    • tqdm库官方文档:https://tqdm.github.io/

    这段代码是一个基础的实现,可能需要根据实际情况进行调整。例如,如果下载的文件非常大,你可能需要考虑如何处理网络中断或错误。此外,如果CSV文件非常大,你可能需要考虑使用更高效的文件读取和处理方法。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月30日
  • 创建了问题 5月30日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵