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

Python移动文件至网络共享文件夹遇[Errno22]无效参数错误求助

问题排查与修复方案

直接错误原因

你遇到的[Errno 22] Invalid argument错误,根源是生成的目标路径混合了Windows UNC路径的反斜杠和正斜杠:\\RAFAEL-DESK\Users\rafa-\Desktop\TesteScript/11.jpg,Windows系统无法识别这种格式的路径。

具体修复步骤

  1. 统一路径分隔符,避免混合使用
    源路径caminho_origem同时使用了反斜杠和正斜杠,容易导致路径拼接时出现格式混乱。建议改用原始字符串并去掉结尾分隔符,让os.path.join自动处理路径拼接:

    caminho_origem = r'C:\TesteScript'
    
  2. 验证UNC路径的可用性与权限

    • 手动在文件资源管理器中打开\\RAFAEL-DESK\Users\rafa-\Desktop\TesteScript,确认共享文件夹能正常访问,且当前运行Python的用户拥有读写权限。
    • 如果访问失败,检查共享设置是否开启、用户权限是否配置正确。
  3. 补全is_image函数定义
    代码中调用了is_image但未给出实现,会触发NameError错误。可以通过检查文件扩展名实现该函数:

    def is_image(file_path):
        image_extensions = ('.jpg', '.jpeg', '.png', '.gif', '.bmp')
        return file_path.lower().endswith(image_extensions)
    
  4. 优化无限循环逻辑
    while True会无间隔持续扫描文件夹,占用CPU资源。建议添加延迟,比如每秒检查一次:

    import time
    # ...其他代码...
    while True:
        # ...遍历移动文件的代码...
        time.sleep(1)
    

修改后的完整代码

import os
import shutil
import time

def is_image(file_path):
    image_extensions = ('.jpg', '.jpeg', '.png', '.gif', '.bmp')
    return file_path.lower().endswith(image_extensions)

# Caminho para o arquivo de origem
caminho_origem = r'C:\TesteScript'

# Caminho para a pasta de destino compartilhada na rede
caminho_destino = r'\\RAFAEL-DESK\Users\rafa-\Desktop\TesteScript'

while True:
    # Lista todos os arquivos na pasta de origem
    for arquivo in os.listdir(caminho_origem):
        caminho_arquivo_origem = os.path.join(caminho_origem, arquivo)
        
        # Verifica se o caminho é de um arquivo (não é um diretório)
        if os.path.isfile(caminho_arquivo_origem):
            if is_image(caminho_arquivo_origem):
                # Monta o caminho para o arquivo de destino na pasta compartilhada
                caminho_arquivo_destino = os.path.join(caminho_destino, arquivo)
                
                try:
                    # Move o arquivo da pasta de origem para a pasta de destino
                    shutil.move(caminho_arquivo_origem, caminho_arquivo_destino)
                    print(f'Arquivo {arquivo} movido com sucesso para {caminho_destino}')
                except FileNotFoundError:
                    print(f'O arquivo {arquivo} não foi encontrado.')
                except PermissionError:
                    print(f'Permissão negada para mover o arquivo {arquivo}.')
                except Exception as e:
                    print(f"Ocorreu um erro ao mover o arquivo {arquivo}: {str(e)}")
    time.sleep(1)

额外注意事项

  • 如果需要处理大文件,建议添加文件锁定检查,避免移动正在写入的文件。
  • 长期运行的话,可以用日志记录替代print输出,方便后续排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:07:35