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

python代码编写
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
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
函数来下载文件。要运行这段代码,你需要安装
requests
和tqdm
库。你可以使用以下命令来安装它们:pip install requests tqdm
请注意,示例中提供的URL是指向Kaggle的一个页面,而不是直接指向可下载的文件。你需要确保URL是指向可以直接下载的文件,否则
requests.get
将不会返回文件内容。参考资料:
- Requests库官方文档:https://docs.python-requests.org/en/latest/
- tqdm库官方文档:https://tqdm.github.io/
这段代码是一个基础的实现,可能需要根据实际情况进行调整。例如,如果下载的文件非常大,你可能需要考虑如何处理网络中断或错误。此外,如果CSV文件非常大,你可能需要考虑使用更高效的文件读取和处理方法。
解决 无用评论 打赏 举报 编辑记录