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

Python使用subprocess.call带变量执行net use映射网络驱动器失败求助

问题解决方案

核心问题原因

  • os.makedirs配置错误:指定的0o222权限在SMB共享场景下不生效,且未添加exist_ok=True参数,若目标文件夹已存在会直接抛出异常,导致后续映射代码终止执行。
  • 命令参数传递错误:使用字符串拼接+shell=True的方式调用subprocess,当路径包含空格、特殊字符时,CMD会错误拆分参数,即便打印结果看起来正确,实际执行时路径也无法被正确识别。
  • 字符串转义异常:手动写的原始字符串(r开头)会保留反斜杠,但拼接生成的mapdrive不属于原始字符串,内部反斜杠可能被二次转义,导致网络路径开头的双反斜杠被识别为单反斜杠,路径失效。

修正后代码

import os
import subprocess
import time

# 基础配置
shared_root = r'\\10.38.10.22\04.Simon'
target_drive = 'z:'
# name为提前录入的学生信息变量
name = "预填的学生姓名"

# 生成学生文件夹绝对路径
student_folder = os.path.join(shared_root, name)

# 创建文件夹,已存在则直接跳过
os.makedirs(student_folder, exist_ok=True)

# 先删除已存在的盘符映射
subprocess.run(
    ['net', 'use', target_drive, '/del', '/Y'],
    capture_output=True,
    text=True
)
time.sleep(1)

# 执行新的映射,列表传参彻底避免转义和空格问题
run_result = subprocess.run(
    ['net', 'use', target_drive, student_folder],
    capture_output=True,
    text=True
)

# 排查时可打开下方注释查看执行详情
# print("返回码:", run_result.returncode)
# print("错误信息:", run_result.stderr)

补充说明

如果执行后仍映射失败,可打开代码末尾的打印注释,根据返回的错误信息定位具体问题,常见的错误原因包括共享盘权限不足、盘符被其他进程占用、学生姓名包含特殊字符未被系统支持等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:51:02