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
相关产品推荐
相关产品推荐

