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

Azure服务器Ubuntu系统下文件存在却报ENOENT/FileNotFoundError求助

解决Ubuntu服务器上创建的WAV文件下载及Python加载报错问题

可能的原因及对应解决方案

1. 符号链接有效性问题

你的代码用os.symlink创建的是软链接,而非实际文件。如果链接指向的源文件不存在,或者链接路径有误,就会触发找不到文件的错误。

  • 登录服务器,执行以下命令检查软链接状态:
    ls -l /mnt/hdd1/AMT/corpus/MAESTRO/wav/
    ls -l /mnt/hdd1/AMT/corpus/MAESTRO/midi/
    
    查看输出里软链接的目标路径是否存在(无效链接通常显示红色或标注broken)。
  • 确保输出目录的wav和midi子目录已提前创建——代码没有目录创建逻辑,若目录不存在会直接导致链接创建失败:
    mkdir -p /mnt/hdd1/AMT/corpus/MAESTRO/{wav,midi}
    

2. VS远程下载未解析软链接

VS默认可能只下载软链接文件本身,而非链接指向的实际音频文件,导致本地无对应内容。

  • 打开VS设置,搜索remote.fileDownload.resolveSymlinks,将其设为true,这样下载时会自动解析软链接,获取实际文件。
  • 或者修改Python代码,直接复制实际文件而非创建软链接(需导入shutil模块):
    #! python
    import os
    import sys
    import argparse
    import shutil  # 新增导入
    
    if __name__ == '__main__':
        parser = argparse.ArgumentParser()
        parser.add_argument('-d_i', help='MAESTRO原始语料目录(输入)', default='/mnt/hdd1/AMT/corpus/MAESTRO/MAESTRO')
        parser.add_argument('-d_o', help='MAESTRO重命名后语料目录(输出)', default='/mnt/hdd1/AMT/corpus/MAESTRO')
        parser.add_argument('-d_list', help='语料列表目录')
        args = parser.parse_args()
    
        print('** 重命名MAESTRO wav/mid文件 **')
        a_attribute = ['train', 'valid', 'test']
        # 提前创建输出子目录,不存在则创建
        os.makedirs(args.d_o.rstrip('/')+'/wav/', exist_ok=True)
        os.makedirs(args.d_o.rstrip('/')+'/midi/', exist_ok=True)
        
        for attribute in a_attribute:
            with open(args.d_list.rstrip('/')+'/'+attribute+'.tsv', 'r', encoding='utf-8') as f:
                a_in = f.readlines()
            for i in range(1, len(a_in)):
                fname_wav = a_in[i].rstrip('\n').split('\t')[5]
                fname_mid = a_in[i].rstrip('\n').split('\t')[4]
                number = a_in[i].rstrip('\n').split('\t')[7]
                src_wav = args.d_i.rstrip('/')+'/'+fname_wav
                dst_wav = args.d_o.rstrip('/')+'/wav/'+attribute+'_'+number+'.wav'
                src_mid = args.d_i.rstrip('/')+'/'+fname_mid
                dst_mid = args.d_o.rstrip('/')+'/midi/'+attribute+'_'+number+'.mid'
                # 复制文件而非创建链接
                shutil.copyfile(src_wav, dst_wav)
                shutil.copyfile(src_mid, dst_mid)
        print('** 完成 **')
    

3. 路径或编码异常

  • 检查TSV文件中是否存在不可见字符或特殊字符:
    cat -A /path/to/your/list/directory/train.tsv
    
    确认每行分隔符是制表符,文件名没有空格、非ASCII字符等可能导致路径解析错误的内容。
  • 在代码中添加路径验证日志,确认源文件和目标路径的正确性:
    # 在创建链接/复制文件前添加
    src_wav = args.d_i.rstrip('/')+'/'+fname_wav
    if not os.path.exists(src_wav):
        print(f"警告:源文件不存在 {src_wav}")
        continue
    print(f"处理文件:{src_wav} -> {dst_wav}")
    

4. 文件权限问题

确保服务器上的源WAV/MIDI文件有可读权限,否则VS下载或Python加载时会因权限不足触发类似“文件不存在”的错误:

chmod +r /mnt/hdd1/AMT/corpus/MAESTRO/MAESTRO/**/*.wav
chmod +r /mnt/hdd1/AMT/corpus/MAESTRO/MAESTRO/**/*.mid

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 04:36:01