You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python创建月度文件夹下载zip时出现Permission denied权限错误如何解决

错误根因

你遇到的权限报错和os.chmod无关,是两个基础代码错误导致的:

  • 未导入urllib相关模块,代码中导入了requests但实际使用urllib的方法
  • urllib.urlretrieve的第二个参数要求传入带文件名的完整存储路径,你直接传入了文件夹路径,系统无法将文件写入文件夹对象,因此触发权限类报错

修正方案

  1. 补充导入所需的urllib.request模块(如果是Python2调整为对应urllib即可,以下默认Python3环境)
  2. 拼接完整的zip文件存储路径,不要直接传文件夹路径
  3. 建议用requests下载文件更稳定,你已经导入了requests可以直接复用,不需要用urllib

可运行完整代码

import requests
import os
from datetime import datetime

# 生成月份标识
d = datetime.today().strftime('%b%y') # 输出格式如Oct24
# 目标文件夹路径
base_dir = 'L:/Support/Data_load/NativeTitle'
newpath = os.path.join(base_dir, d)
# 创建文件夹,exist_ok=True避免重复创建报错
os.makedirs(newpath, exist_ok=True)

# 拼接完整的文件保存路径,保留原zip文件名
zip_filename = 'NTDA_Schedule_Nat_shp.zip'
save_full_path = os.path.join(newpath, zip_filename)

print(f'Folder created in {base_dir}')
print('Beginning file download...')

url = 'http://www.nntt.gov.au/GeoDocs//ESRI/NTDA_Schedule_Nat_shp.zip'
# 用已导入的requests下载,避免urllib版本兼容问题
resp = requests.get(url, timeout=120)
resp.raise_for_status() # 下载失败直接抛出异常
# 写入文件
with open(save_full_path, 'wb') as f:
    f.write(resp.content)

print(f'File saved to {save_full_path} successfully')

额外说明

如果你的环境是Python2,只需要把requests写入部分替换为urllib的写法即可,核心逻辑还是必须指定完整的带文件名的存储路径,不需要额外调用os.chmod修改权限,除非你的磁盘目录本身有严格的权限管控,这种情况需要联系运维给当前运行Python的账户开通对应目录的读写权限即可。

内容的提问来源于stack exchange,提问作者Vanessa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:54:03