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

Ubuntu下Python复制挂载的网络共享文件夹文件报错:文件不存在

问题排查与解决办法

1. 网络共享缓存/延迟问题

os.listdir()返回的是挂载点本地缓存的文件列表,可能实际共享端的文件已被移除,或者网络波动导致文件暂时不可访问。给代码加上文件存在检查就能规避这类情况:

import sys
import os
import shutil

SHARED_FOLDER = '/home/john/mnt'
TARGET_FOLDER = "/home/john/Desktop/"

for img in os.listdir(SHARED_FOLDER):
    src_path = os.path.join(SHARED_FOLDER, img)
    print(f"Processing: {src_path}")
    
    if not os.path.exists(src_path):
        print(f"Warning: {src_path} no longer exists")
        continue
    if os.path.isdir(src_path):
        print(f"Warning: {src_path} is a directory, skipping")
        continue
    
    try:
        shutil.copy(src_path, TARGET_FOLDER)
        print(f"Successfully copied {img}")
    except Exception as e:
        print(f"Failed to copy {img}: {str(e)}")

2. 权限不足(伪装成文件不存在)

Linux下权限不足时,打开文件的错误可能会伪装成"文件不存在"。执行以下命令检查目标文件的权限:

ls -l /home/john/mnt/2023-04-24_14:37:10_68.png

如果当前用户没有读权限,需要调整共享挂载的权限配置,或者联系共享端管理员开放读权限。

3. 符号链接问题

如果共享文件夹中的文件是符号链接,且链接指向的目标在本地无法访问(比如共享端的内部路径),会导致shutil.copy无法读取源文件。可以添加符号链接检查并跳过:

if os.path.islink(src_path):
    print(f"Skipping symlink: {src_path}")
    continue

4. 挂载配置问题

检查网络共享的挂载参数,比如是否是只读挂载(ro),或者挂载选项限制了文件访问。执行以下命令查看挂载信息:

mount | grep /home/john/mnt

如果是SMB共享,确保挂载时添加了rw(读写)选项,必要时重新挂载:

sudo umount /home/john/mnt
sudo mount -t cifs //server/share /home/john/mnt -o username=youruser,password=yourpass,rw

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 02:57:36