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

Python实现局域网内两台Windows 10电脑间文件传输问题求助

局域网Windows电脑间文件传输的问题解决

你的代码存在两个核心问题,直接导致了报错:

  • 字符串拼接语法错误:destination_file里的D:\\Test\\testfile.txt没加引号,代码本身无法正常运行
  • 局域网路径格式错误:shutil不支持直接用IP加本地路径的方式访问远程电脑,Windows下必须使用UNC路径,且目标电脑需先将目标文件夹设为共享

1. 先修正代码的语法错误

原代码里的路径拼接语句缺少引号,修正后:

destination_file = ip_address + "\\D:\\Test\\testfile.txt"

但这只是解决语法问题,路径格式仍不符合局域网访问要求,需继续调整。

2. 目标电脑设置共享文件夹

在IP为192.168.1.2的目标电脑上操作:

  • 找到接收文件的文件夹(比如D:\Test),右键选择「属性」→「共享」选项卡→「高级共享」
  • 勾选「共享此文件夹」,设置共享名(默认是文件夹名Test即可)
  • 点击「权限」,确保访问用户拥有「读取/写入」权限(建议用特定用户,而非匿名的Everyone)

3. 编写正确的UNC格式目标路径

共享设置完成后,目标路径需改为UNC格式(Python中反斜杠需转义,或用原始字符串简化):

# 方式1:用转义字符
destination_file = f"\\\\{ip_address}\\Test\\testfile.txt"
# 方式2:用原始字符串,避免转义麻烦
destination_file = rf"\\{ip_address}\Test\testfile.txt"

4. 处理权限验证(若共享需用户名密码)

如果目标电脑的共享需要身份验证,直接用shutil会触发权限错误,可通过两种方式解决:

方法一:提前用命令行映射网络驱动器

运行代码前,以管理员身份执行命令(替换用户名和密码):

net use Z: \\192.168.1.2\Test /user:目标电脑用户名 密码

之后目标路径可写成Z:\\testfile.txt,传输完成后可取消映射:

net use Z: /delete

方法二:用pywin32模块在代码内处理

先安装pywin32:
pip install pywin32
再在代码中添加身份验证逻辑:

import win32net

# 远程访问凭据
credentials = {
    'username': '目标电脑用户名',
    'password': '目标电脑密码',
    'domain': '.'  # 本地用户填.即可
}

# 建立远程连接
win32net.NetUseAdd('\\\\' + ip_address, 2, credentials, 0)

# 执行文件传输
shutil.copyfile(source_file, destination_file)

# 断开连接
win32net.NetUseDel('\\\\' + ip_address, 0)

最终完整可运行代码(假设共享已设置且无需额外权限)

import shutil

ip_address = "192.168.1.2"
source_file = "D:\\Test\\testfile.txt"
destination_file = rf"\\{ip_address}\Test\testfile.txt"

try:
    shutil.copyfile(source_file, destination_file)
    print("文件传输成功")
except Exception as e:
    print(f"传输失败:{str(e)}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:16:37