FileNotFoundError,当我 运行 shutil.copy 时,1 个特定的“.dylib”文件每次都会抛出 FileNotFoundError 错误

FileNotFoundError, when I run shutil.copy, 1 particular ".dylib" file throws FileNotFoundError error every time

我正在制作一个 python 应用程序,其中一个功能涉及将一个目录的内容复制到多个不同的位置。其中一些文件被复制到它们当前所在的相同目录并被重命名。它几乎总是有效,除非它命中这个特定文件。

这是执行复制的代码。

shutil.copy(original_path_and_file,os.path.join(redun.path, redun.file_name))

导致崩溃的特定副本是在它试图将 /Users/<myusername>/Desktop/archive1/test_2_here/myproject/liboqs.dylib 复制到 /Users/<myusername>/Desktop/archive1/test_2_here/myproject/liboqs.0.dylib

这是我的终端中出现的错误:

FileNotFoundError: [Errno 2] No such file or directory: '/Users/<myusername>/Desktop/archive1/test_2_here/myproject/liboqs.dylib'  

为什么这个文件抛出错误,而它复制的其他文件 none 抛出任何错误?

更新

根据查找器,该文件实际上是一个“别名”:

也许您可以尝试通过连接目录路径和文件名来解决它,如下所示:

这里的一个问题是您没有指定文件的路径。当您从父目录执行命令时,脚本无法知道 testfile2.txt 位于您的输入目录的子目录中。要解决此问题,请使用:

shutil.copy(os.path.join(foldername, filename), copyDirAbs)

# Recursively walk the Search Directory, copying matching files
# to the Copy Directory
for foldername, subfolders, filenames in os.walk(searchDirAbs):
    print('Searching files in %s...' % (foldername))
    for filename in filenames:
        if filename.endswith('.%s' % extension):
            print('Copying ' + filename)
            print('Copying to ' + copyDirAbs)
            totalCopyPath = os.path.join(searchDirAbs, filename)
            shutil.copy(totalCopyPath, copyDirAbs)

print('Done.')

Python FileNotFoundError: [Errno 2] No such file or directory 错误 通常由 os 库引发。此错误告诉您您正在尝试访问不存在的文件或文件夹。要修复此错误,请检查您在程序中引用的文件或文件夹是否正确。

我解决这个问题的方法是让应用程序忽略 link 文件。我写了这个:

if not os.path.islink(original_path_and_file):
    shutil.copy(original_path_and_file,os.path.join(redun.path, redun.file_name))

这在技术上更像是 work-around 而不是修复,因为它实际上并没有复制文件,但我认为该应用程序在不复制 link 文件时仍然可以正常工作。