优化我的代码:import requests import os # 判断是否存在此文件,不存在则创建 file_name = 'wod3/' if not os.path.exists(file_name): os.mkdir(file_name) head = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.57' } # 获取文件全部内容 str2 = open('URL3', 'r', encoding='utf-8') str1 = str2.readlines() a = 1 for i in str1: if 'http' in i: # 去除空格 o = ''.join(i.split()) # print(o) nxt = requests.get(url=o, headers=head).content # print(nxt) with open(file_name + f'{a}.mp4', mode='wb') as f: f.write(nxt) a = a + 1
时间: 2024-03-03 14:47:12 浏览: 22
可以考虑以下几点进行优化:
1. 将文件读取操作放在循环外面,这样可以避免多次打开和关闭文件,提高效率。
2. 可以使用enumerate()函数来遍历列表,避免手动定义计数器变量a。
3. 使用try...except语句来捕获可能出现的异常,以增强代码的健壮性。
4. 可以考虑使用线程池或协程来进行异步下载,提高下载效率。
优化后的代码如下:
```
import requests
import os
file_name = 'wod3/'
if not os.path.exists(file_name):
os.mkdir(file_name)
head = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.57'
}
with open('URL3', 'r', encoding='utf-8') as f:
urls = [url.strip() for url in f.readlines() if 'http' in url]
def download_video(url):
try:
response = requests.get(url, headers=head, timeout=10)
if response.status_code == 200:
content = response.content
file_path = os.path.join(file_name, f'{url.split("/")[-1]}.mp4')
with open(file_path, mode='wb') as f:
f.write(content)
except Exception as e:
print(f'Download {url} failed: {e}')
for i, url in enumerate(urls):
download_video(url)
```
这样优化后的代码可以更高效地下载视频,并且具有一定的健壮性。