Shutil.rmtree:FileNotFoundError:[Errno 2]没有这样的文件或目录:'._xxx'

2023-12-27

代码和错误(减少,如果您想查看完整代码,请参阅最后一节):

import shutil
import os

filteredCleaned = 
 '/Volumes/Extreme_SSD/Raymond_Lab/Day_4_Rotarod_Videos_Rotated_if_Necessary_copy/filtered_cleaned_WT_cleaned_YAC128'

if os.path.exists(filteredCleaned):
    shutil.rmtree(filteredCleaned)

^ 显示隐藏文件(按shift+command+。)并且其他目录显示隐藏文件(如果存在)。

runfile('/Users/ksb7640/Documents/UBC_Academic/Raymond_Lab/448/rotarod/svm_all/data_filter.py', wdir='/Users/ksb7640/Documents/UBC_Academic/Raymond_Lab/448/rotarod/svm_all')
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/IPython/core/interactiveshell.py", line 3417, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-2-b9676f9bf96c>", line 1, in <module>
    runfile('/Users/ksb7640/Documents/UBC_Academic/Raymond_Lab/448/rotarod/svm_all/data_filter.py', wdir='/Users/ksb7640/Documents/UBC_Academic/Raymond_Lab/448/rotarod/svm_all')
  File "/Applications/PyCharm.app/Contents/plugins/python/helpers/pydev/_pydev_bundle/pydev_umd.py", line 197, in runfile
    pydev_imports.execfile(filename, global_vars, local_vars)  # execute the script
  File "/Applications/PyCharm.app/Contents/plugins/python/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "/Users/ksb7640/Documents/UBC_Academic/Raymond_Lab/448/rotarod/svm_all/data_filter.py", line 21, in <module>
    shutil.rmtree(filteredCleaned)
  File "/usr/local/Cellar/[email protected] /cdn-cgi/l/email-protection/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/shutil.py", line 715, in rmtree
    _rmtree_safe_fd(fd, path, onerror)
  File "/usr/local/Cellar/[email protected] /cdn-cgi/l/email-protection/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/shutil.py", line 672, in _rmtree_safe_fd
    onerror(os.unlink, fullname, sys.exc_info())
  File "/usr/local/Cellar/[email protected] /cdn-cgi/l/email-protection/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/shutil.py", line 670, in _rmtree_safe_fd
    os.unlink(entry.name, dir_fd=topfd)
FileNotFoundError: [Errno 2] No such file or directory: '._filtered_combined_Experiment2-190630_Day4_145m2_rotarod2_Cam2onRotarodDeepCut_resnet50_rotarod3Jul17shuffle1_1030000.csv'

问题:

哪里'._filtered_combined_Experiment2-190630_Day4_145m2_rotarod2_Cam2onRotarodDeepCut_resnet50_rotarod3Jul17shuffle1_1030000.csv'来自?

我确实用过df.to_csv(csv, index=False)创造filtered_combined_Experiment2-190630_Day4_145m2_rotarod2_Cam2onRotarodDeepCut_resnet50_rotarod3Jul17shuffle1_1030000.csv in filtered_cleaned_WT_cleaned_YAC128但我从来没有用过chmod隐藏它们。

此外,正如您在屏幕截图中看到的,甚至没有隐藏文件。错误是什么?

完整的代码可能是多余的,但以防万一......(有关相关的缩短代码,请参见顶部。)

数据过滤器.py

import shutil

from export_df_to_csv import export_df_to_csv
from extract_parent_current import extract_parent_current
from import_df import *

prefix = 'filtered_'

bound = 0.9

# make a directory for output files
cleanedWT = '/Volumes/Extreme_SSD/Raymond_Lab/Day_4_Rotarod_Videos_Rotated_if_Necessary_copy/cleaned_WT'
cleanedYAC128 = '/Volumes/Extreme_SSD/Raymond_Lab/Day_4_Rotarod_Videos_Rotated_if_Necessary_copy/cleaned_YAC128'

cleanedWTParentDir, WTdir = extract_parent_current(cleanedWT)
cleanedYAC128ParentDir, YAC128dir = extract_parent_current(cleanedYAC128)

filteredCleaned = os.path.join(cleanedYAC128ParentDir, prefix + WTdir + '_' + YAC128dir)

if os.path.exists(filteredCleaned):
    shutil.rmtree(filteredCleaned)
os.mkdir(filteredCleaned)

csvs_labels_arr = import_csvs(cleanedWT, cleanedYAC128)
paths_dfs_labels_arr = csvs_to_paths_dfs_labels_arr(csvs_labels_arr)
for path_df_label in paths_dfs_labels_arr:
    _, dfFileName = extract_parent_current(path_df_label[0])
    df = path_df_label[1]

    # filter out rows below bound
    df = df[
        (df['Rightpaw likelihood'] > bound) & (df['Leftpaw likelihood'] > bound) & (df['Tail likelihood'] > bound)]

    export_df_to_csv(df, os.path.join(filteredCleaned, prefix + dfFileName))


导出_df_to_csv.py

input_file = '/Volumes/Extreme SSD/Raymond Lab/Day_4_Rotarod_Videos_Rotated_if_Necessary copy/cleaned_WT/cleaned_Experiment2-190630_Day4_145m1_rotarod3_Cam2onRotarodDeepCut_resnet50_rotarod3Jul17shuffle1_1030000.csv'
output_file = '/Volumes/Extreme SSD/Raymond Lab/Day_4_Rotarod_Videos_Rotated_if_Necessary copy/cleaned_WT/cleaned_Experiment2-190630_Day4_145m1_rotarod3_Cam2onRotarodDeepCut_resnet50_rotarod3Jul17shuffle1_1030000.csv'


def export_df_to_csv(df, csv):
    df.to_csv(csv, index=False)

extract_parent_current.py

import os


def extract_parent_current(dir):
    if str.endswith(dir, '/'):
        dir = dir[:-1]
    return os.path.split(dir)

导入_df.py

import os
import random
from copy import deepcopy
import pandas as pd


def import_csvs(WT_file_path, YAC_file_path):
    csv_paths_arr = []
    for root, dirs, files in os.walk(WT_file_path, topdown=False):
        for file in files:
            if not file.startswith('.'):
                csv_paths_arr.append([os.path.join(root, file), 0])

    for root, dirs, files in os.walk(YAC_file_path, topdown=False):
        for file in files:
            if not file.startswith('.'):
                csv_paths_arr.append([os.path.join(root, file), 1])

    return csv_paths_arr


def csvs_to_paths_dfs_labels_arr(csvpaths_labels_arr):
    paths_dfs_labels_arr = deepcopy(csvpaths_labels_arr)
    for i, csvpath_label_arr in enumerate(csvpaths_labels_arr):
        (paths_dfs_labels_arr[i])[0] = pd.read_csv(csvpath_label_arr[0], encoding='unicode_escape')
        paths_dfs_labels_arr[i].insert(0, csvpath_label_arr[0])
    return paths_dfs_labels_arr


def import_df(WT_file_path, YAC_file_path):
    csv_paths_arr = import_csvs(WT_file_path, YAC_file_path)
    dfs_labels = csvs_to_paths_dfs_labels_arr(csv_paths_arr)
    random.shuffle(dfs_labels)
    return dfs_labels

我已经为链接的问题提供了这个答案递归删除目录和所有符号链接 https://stackoverflow.com/questions/70246591/delete-directory-and-all-symlinks-recursively,但决定在这里重现它。在那里,它陷入了为根本问题提供解决方案而不是实际问题的答案的谬误,而在这里它直接回答了哪里._filtered_combined_Experiment2-190630_Day4_145m2_rotarod2_Cam2onRotarodDeepCut_resnet50_rotarod3Jul17shuffle1_1030000.csv来自。

The /Volumes/Extreme_SSD/路径表明您使用的是 Mac OSX,并且您的目录至少部分位于非 Mac 文件系统上(即不是 HFS+)。在这些文件上,Mac 文件系统驱动程序会自动创建前缀为的二进制伴随文件._去记录所谓的扩展属性(解释于https://apple.stackexchange.com/questions/14980/why-are-dot-underscore-files-created-and-how-can-i-avoid-them https://apple.stackexchange.com/questions/14980/why-are-dot-underscore-files-created-and-how-can-i-avoid-them,但也如下图所示),在日常操作(例如使用默认 OSX 查看器查看文件)期间。

rmtree在不支持文件描述符的系统上os.scandir(如 Mac OSX)现在不安全地创建一个条目列表,然后逐一取消它们的链接(创建一个已知的竞争条件:https://github.com/python/cpython/blob/908fd691f96403a3c30d85c17dd74ed1f26a60fd/Lib/shutil.py#L592-L621 https://github.com/python/cpython/blob/908fd691f96403a3c30d85c17dd74ed1f26a60fd/Lib/shutil.py#L592-L621)。不幸的是,两个单独的行为每次都使这个条件成立:

  1. 原始文件始终列在扩展属性一之前,并且
  2. 当原始文件取消链接时(test.txt)元文件(._test.txt)同时被删除。

因此,轮到扩展属性文件时会丢失并抛出FileNotFoundError你正在经历。

我认为这个错误最好的解决方法是cpython#14064 https://github.com/python/cpython/pull/14064,其目的是忽略FileNotFoundErrors in rmtree一般来说。

减轻

同时,您可以使用以下命令忽略这些元文件上的取消链接错误onerror:

def ignore_extended_attributes(func, filename, exc_info):
    is_meta_file = os.path.basename(filename).startswith("._")
    if not (func is os.unlink and is_meta_file):
        raise

shutil.rmtree(path_dir, onerror=ignore_extended_attributes)

Macos 扩展属性展示

为了说明这一点,您可以创建一个小的 ExFAT 磁盘映像并将其安装到/Volumes/Untitled用命令

hdiutil create -size 5m -fs exfat test.dmg
hdiutil attach test.dmg            # mounts at /Volumes/Untitled
cd /Volumes/Untitled

mkdir test                         # create a directory to remove
cd test
touch test.txt
open test.txt                      # open the test.txt file in the standard editor 

只需在标准文本编辑器中打开文件即可创建扩展属性文件._test.txt并在其中记录最后访问时间:

/Volumes/Untitled/test $ ls -a
.          ..         ._test.txt test.txt
/Volumes/Untitled/test $ xattr test.txt
com.apple.lastuseddate#PS

问题是,取消链接原始文件也会自动取消链接伴随文件。

/Volumes/Untitled/test $ rm test.txt
/Volumes/Untitled/test $ ls -a
.          ..
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Shutil.rmtree:FileNotFoundError:[Errno 2]没有这样的文件或目录:'._xxx' 的相关文章

  • 如何编写嵌套的 __init__.py 文件

    我正在努力解决嵌套问题 init py在我正在编写的Python包中 该包具有以下架构 module init py submodule1 init py source py submodule2 init py source py sub
  • 错误:process_executor.py:702: ... 当一些作业被分配给执行器时,工作人员停止了。这可能是由于工作超时太短造成的

    根据主题中的错误 修复方法是什么 环境 Python 3 9 或 3 10 Windows 10 x64 使用时出现错误joblib https joblib readthedocs io en latest 对于并行处理 result c
  • 蟒蛇 | MySQL | AttributeError:模块“mysql.connector”没有属性“connect”

    我正在学习 python 中的一个新库 mysql 我尝试执行以下命令 import mysql connector mydb mysql connector connect host localhost user root passwd
  • 当我有自定义身份验证模型时,如何登录 Django Rest 可浏览 API?

    我有一个自定义用户模型 如下所示account models py from django contrib auth modles import AbstractUser from django db models signals impo
  • 从文本文件中删除特定字符

    我对 Python 和编码都很陌生 我当时正在做一个小项目 但遇到了一个问题 44 1 6 23 2 7 49 2 3 53 2 1 68 1 6 71 2 7 我只需要从每行中删除第三个和第六个字符 或者更具体地说 从整个文件中删除 字符
  • 使用 django-rest-framework 设置对象级权限

    尝试使用 django rest framework 最干净 最规范地管理 django guardian 对象级权限 我想将对象的读取权限 module view object 分配给在执行 POST 时发出请求的用户 我的基于阶级的观点
  • 多处理中的动态池大小?

    有没有办法动态调整multiprocessing Pool尺寸 我正在编写一个简单的服务器进程 它会产生工作人员来处理新任务 使用multiprocessing Process对于这种情况可能更适合 因为工作人员的数量不应该是固定的 但我需
  • 协程从未被等待

    我正在使用一个简单的上下文管理器 其中包含一个异步循环 class Runner def init self self loop asyncio get event loop def enter self return self def e
  • 在 python pandas 中,如何保存“网格图”?

    我对 pandas 绘图工具很陌生 在文档中 以下命令非常方便 myplot rts ret hist bins 50 by rts primary mic 然而 当我尝试从图中获取图形参考并保存它时 问题就出现了 myfigure myp
  • 类型错误:需要二进制或 unicode 字符串,得到 618.0

    I ve been trying to implement this ML Linear Model into my dataset https www tensorflow org tutorials estimator linear L
  • Python Tkinter 模块不显示输出

    我正在尝试学习 Python 并尝试使用 Python 中的 GUI 并遇到了这个 Tkinter 模块 我的代码运行 但运行时窗口没有出现 我的代码如下 from Tkinter import to create a root windo
  • 使用 for 循环创建一系列元组

    我已经搜索过 但找不到答案 尽管我确信它已经存在了 我对 python 很陌生 但我以前用其他语言做过这种事情 我正在以行形式读取数据文件 我想将每行数据存储在它自己的元组中 以便在 for 循环之外访问 tup i inLine wher
  • Python bug - 或者我的愚蠢 - 扫描字符串文字时 EOL

    我看不出以下两行之间有显着差异 然而第一个解析 而后者则不解析 In 5 n Axis of Awesome In 6 n Axis of Awesome File
  • AWS Lambda 不读取环境变量

    我正在编写一个 python 脚本来查询 Qualys API 中的漏洞元数据 我在 AWS 中将其作为 lambda 函数执行 我已经在控制台中设置了环境变量 但是当我执行函数时 出现以下错误 module initialization
  • minizinc python 安装

    我通过 anaconda 提示符在 python 上安装了 minizinc 就像其他软件包一样 pip install minizinc 该软件包表示已成功安装 我可以导入该模块 但是 我正在遵循基本示例https minizinc py
  • Django 管理器链接

    我想知道是否有可能 如果可以的话 如何 将多个管理器链接在一起以生成受两个单独管理器影响的查询集 我将解释我正在研究的具体示例 我有多个抽象模型类 用于为其他模型提供小型的特定功能 其中两个模型是DeleteMixin 和GlobalMix
  • rpy2 无法加载外部库

    希望有人能帮忙解决这个问题 R版本 2 14 1rpy2版本 2 2 5蟒蛇版本 2 7 3 一直在尝试在 python 脚本中使用 rpy2 加载 R venneuler 包 该包以 rJava 作为依赖项 venneuler 和 rJa
  • 将 Keras 集成到 SKLearn 管道?

    我有一个 sklearn 管道 对异构数据类型 布尔 分类 数字 文本 执行特征工程 并想尝试使用神经网络作为我的学习算法来拟合模型 我遇到了输入数据形状的一些问题 我想知道我想做的事情是否可能 或者我是否应该尝试不同的方法 我尝试了几种不
  • 如何使用 python 定位和读取 Data Matrix 代码

    我正在尝试读取微管底部的数据矩阵条形码 我试过libdmtx http libdmtx sourceforge net 它有 python 绑定 当矩阵的点是方形时工作得相当好 但当矩阵的点是圆形时工作得更糟 如下所示 另一个复杂问题是在某
  • 如何(安全)将 Python 对象发送到我的 Flask API?

    我目前正在尝试构建一个 Flask Web API 它能够在 POST 请求中接收 python 对象 我使用 Python 3 7 1 创建请求 使用 Python 2 7 运行 API 该 API 设置为在我的本地计算机上运行 我试图发

随机推荐

  • 如何暂停后续任务直到第一次完成然后与等待的任务共享其响应?

    我有一个actor它以第一个请求暂停后续请求直到完成的方式限制请求 然后与它们共享其响应 这样它们就不必发出相同的请求 这就是我想做的 let cache Cache let operation OperationStatus func e
  • 映射的网络驱动器未显示在“我的电脑”中

    我正在尝试使用 PowerShell 5 0 创建外部网络驱动器 我需要这些驱动器才能显示在 我的电脑 中 为此 我使用以下命令 New PSDrive Name X PSProvider FileSystem Root 192 168 0
  • int* p 和 int *p 声明之间的区别[重复]

    这个问题在这里已经有答案了 和有什么区别int p and an int p宣言 有没有不同 这是一个问题notation not 语义 第二个是较少误导 因为 int a b 明确宣布int and an int 然而 int a b 看
  • 需要适当的 MySQL 查询

    很抱歉在这里问这个问题 但我对 JOIN 的理解相当不稳定 几个小时的混乱并没有让我有任何结果 这是我已经设置的以及我需要的 我有三张表 每一张用于用户 位置和签到 每次用户前往某个位置时 他们都可以在那里签到 签到表示例如下 checki
  • 如何在 Chrome headless 中评估脚本?

    节点有 e and p分别用于评估和评估并打印的标志 我知道有一个 replChrome headless 的标志 但我想知道是否有一种方法可以评估并打印表达式 例如 chrome headless eval and print navig
  • 为什么 java.util.Collection 上有一个方法 iterator()

    当接口 java util Collection 已经扩展了定义了此方法的 java util Iterable 时 为什么还要在接口 java util Collection 上定义该方法 iterator 呢 我正在考虑某种向后兼容性或
  • 从Datamapper开始,关联问题

    我刚刚深入研究 Datamapper 和 Sinatra 并有一个关于关联的问题 以下是我拥有的一些型号 这就是我想要实现的 我在锻炼项目和锻炼方面遇到问题 锻炼将单独管理 但锻炼项目有与每一行关联的单个锻炼 锻炼 只是类型的列表 锻炼 跑
  • 带有重新分析点的FolderBrowserDialog SelectedPath

    当我选择的文件夹位于远程服务器上并且是符号链接 或任何类型的重新分析点 时 我遇到了 FolderBrowserDialog 的 SelectedPath 属性问题 如果我选择普通文件夹 则会返回完整路径 例如 SERVER folder
  • MySQL 数据 - 实现分页的最佳方式?

    我的 iPhone 应用程序连接到我的 PHP Web 服务以从 MySQL 数据库检索数据 一个请求最多可返回 500 个结果 实现分页并一次检索 20 个项目的最佳方法是什么 假设我从数据库收到前 20 个条目 现在如何请求接下来的 2
  • java.lang.String的哈希码真的被缓存了吗?

    String s1 String1 System out println s1 hashCode return an integer i1 Field field String class getDeclaredField value fi
  • 在 Python 中对集合进行排序与​​对列表进行排序在时间上存在巨大差异

    我想知道我是否应该将数据结构作为集合或列表 大多数情况下我会进行集合运算 但最终我需要对其进行排序 我想知道是否应该先将集合设为列表 然后使用sorted list my set 或者立即对集合进行排序sorted my set 可以说 我
  • SPARQL DESCRIBE 查询

    看来我不理解 SPARQL DESCRIBE 查询 我需要检索与条件匹配的资源的完整图表 在我尝试过的一个 SPARQL 端点上 挪威 R data N http data bibsys no data query authority ht
  • 如何更改 Android 上切换按钮的背景颜色

    我尝试使用 XML 文件将切换按钮的背景颜色更改为白色 但切换按钮完全损坏 看起来所有的按钮都被白色覆盖了 当我将切换按钮的颜色更改为白色时 切换按钮上没有打开或关闭的指示 是否有另一种方法可以更改背景而不会损坏切换按钮的指示
  • 使用 React Router 6 导航时恢复滚动位置

    如何设置 React Router 6 以在导航和刷新浏览器窗口时恢复滚动位置 React Router 5 有一个关于滚动恢复的页面 https v5 reactrouter com web guides scroll restorati
  • 如何混淆(保护)JavaScript? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想制作一个非开源的 JavaScript 应用程序 因此我想了解如何混淆我的 JS 代码 这可能吗 混淆 尝试YUI压缩器 http
  • 交错2个不等长度的列表[重复]

    这个问题在这里已经有答案了 我希望能够交错两个长度可能不相等的列表 我所拥有的是 def interleave xs ys a xs b ys c a b c 2 a c 1 2 b return c 这对于长度等于或只是 1 的列表非常有
  • C# 3.5 参数的可选值和默认值

    我正在使用 C net 3 5 构建应用程序 我一直在 net 4 0 中使用可选参数属性 没有出现任何问题 我确实注意到 在 3 5 中 可以选择 解决方法 将以下属性添加到您的方法中 如下所示 public static void Me
  • 您可以在一个项目中混合使用 .net 语言吗?

    您可以在一个项目中混合使用 net 语言吗 所以预编译后 我想调用其他源文件的类和方法 对于网络和应用程序 我对 F 和 C 特别感兴趣 您可以在单个程序集中混合语言 and MSBuild http msdn microsoft com
  • 我可以报告 openmp 任务的进度吗?

    想象一个经典的 OMP 任务 对 0 0 1 0 范围内的双精度型大向量求和 Live On Coliru http coliru stacked crooked com a 6167c106392d7020 using namespace
  • Shutil.rmtree:FileNotFoundError:[Errno 2]没有这样的文件或目录:'._xxx'

    代码和错误 减少 如果您想查看完整代码 请参阅最后一节 import shutil import os filteredCleaned Volumes Extreme SSD Raymond Lab Day 4 Rotarod Videos