如何引发 Shutil.SameFileError?

2023-12-21

我正在努力提高一个shutil.SameFileError用于单元测试但未能成功。问题是没有引发错误。

import unittest
class TestErrors(unittest.TestCase):
    """Unit testing of errors"""
    def test_copy_file(self):
        """Error tests for copy_file"""
        with self.assertRaises(shutil.SameFileError):
           copy_file_tester(
               f"{mpath}{os.sep}tests{os.sep}assets{os.sep}runs{os.sep}{get_fake_project()}{os.sep}i1{os.sep}C.fdf",
               f"{mpath}{os.sep}tests{os.sep}assets{os.sep}runs{os.sep}{get_fake_project()}{os.sep}i1{os.sep}C.fdf"
           )

代码为copy_file_tester:

def copy_file_tester(sourcefile, destinationfile):
    """Tester function for copy_file"""
    copy_file(sourcefile, destinationfile)
    return list(glob.glob(destinationfile))

代码为copy_file:

def copy_file(sourcefile, destinationfile):
    """Copy and paste a file"""
    if not os.path.isfile(sourcefile):
        raise FileNotFoundError(f"ERROR: {sourcefile} is not found")
    try:
        print(f"Copying {sourcefile} to {destinationfile}")
        if not os.path.exists(destinationfile):
            shutil.copy(sourcefile, destinationfile)
            print(f"{sourcefile} is copied to {destinationfile} successfully")
        else:
            print(f"{destinationfile} exists")
    except shutil.SameFileError:
        print(f"ERROR: {sourcefile} and {destinationfile} represents the same file")
    except PermissionError:
        print(f"ERROR: Permission denied while copying {sourcefile} to {destinationfile}")
    except (shutil.Error, OSError, IOError) as e:
        print(f"ERROR: An error occurred while copying {sourcefile} to {destinationfile} ({e})")

谢谢您的帮助。我用以下方法做到了:

def copy_file(sourcefile, destinationfile):
    """Copy and paste a file"""
    if not os.path.isfile(sourcefile):
        raise FileNotFoundError(f"ERROR: {sourcefile} is not found")
    try:
        print(f"Copying {sourcefile} to {destinationfile}")
        if not os.path.exists(destinationfile):
            shutil.copy(sourcefile, destinationfile)
            print(f"{sourcefile} is copied to {destinationfile} successfully")
        else:
            print(f"{destinationfile} exists")
    except shutil.SameFileError as e:
        raise shutil.SameFileError(f"ERROR: {sourcefile} and {destinationfile} represents the same file") from e
    except PermissionError as e:
        raise PermissionError(f"ERROR: Permission denied while copying {sourcefile} to {destinationfile}") from e
    except (shutil.Error, OSError, IOError) as e:
        raise f"ERROR: An error occurred while copying {sourcefile} to {destinationfile} ({e})" from e
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何引发 Shutil.SameFileError? 的相关文章

随机推荐

  • JPA2 Criteria API 运行时从 varchar(25) 转换为十进制

    因此 我已经看到类似主题上堆栈溢出的所有线程 但我没有找到解决我的问题的方法 我正在尝试创建一个 Criteria 查询 并得到以下 SQL 第一个 SQL 简化版 SELECT latitude FROM stations WHERE A
  • Javascript momentjs 将 UTC 从字符串转换为日期对象

    各位 在处理 moment js 文档时遇到困难 record lastModified moment utc format returns 2014 11 11T21 29 05 00 00 太棒了 它是 UTC 当我将其存储在 Mong
  • 在 Windows 上使用 C 将数据流式传输到声卡 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 作为大学项目的一部分 我必须进行一些信号处理 并希望使用 PC 声卡输出结果 该软件必须用 C 语言编写
  • 如何正确使用批处理 Tensorflow 数据集?

    我是 Tensorflow 和深度学习的新手 并且在 Dataset 类上遇到了困难 我尝试了很多方法 但找不到好的解决方案 我正在尝试什么 我有大量图像 500k 来训练我的 DNN 这是一个去噪自动编码器 所以我每个图像都有一对 我正在
  • ActionBar 菜单项中的 orderInCategory 是什么以及为什么它用于..?

    我正在处理操作菜单项及其溢出项 这是我的main menu xml menu menu
  • 如何让 Maven 构建更快?

    我有一个多模块java项目 Maven 大约需要 40 秒来构建它 我也尝试过使用多线程构建 Maven 方法是指定 T 和 C 参数来表示不使用任何线程和核心 但我还没有看到我的构建的墙时间有任何显着的改进 我正在使用 maven 3 2
  • 如何防止每次运行整个笔记本时运行“pip install ...”?

    我运行的大多数 python 笔记本在初始运行时往往需要一些设置 使用 pip install 每次运行笔记本时都执行设置代码效率很低 因此我宁愿避免这种情况 另外 我不想将设置代码移动到不同的笔记本 因为通常它只是几行代码 我的解决方案是
  • 在 Python 中将 ASCII 代码列表转换为字符串(字节数组)

    我有一个整数 ASCII 值列表 需要将其转换为字符串 二进制 以用作加密操作的密钥 我正在用python重新实现java加密代码 这是可行的 假设密钥是 8 字节 key struct pack BBBBBBBB 17 24 121 1
  • 如何在Linux上列出非空子目录?

    我有一个包含多个子目录的目录 我只想列出那些至少包含一个文件的子目录 我怎样才能做到这一点 find mindepth 1 maxdepth 1 not empty type d 将为您提供所有非空目录 如果您想排除仅包含其他目录 但不包含
  • 抽象类返回

    抱歉 如果这是一件小事 我创建了一个带有一些子类的抽象类 控制器类创建请求子类类型的抽象类类型的对象 并返回实现的抽象类 子类具有特定的属性 我无法访问返回对象的这些属性 因为这是抽象类默认类型 所以我尝试进行转换 但这会出现错误 item
  • 在 Heroku 上运行 Rails 单元测试

    我已经将一个应用程序部署到 Heroku 一切正常 问题是我无法远程运行单元测试 我试过了 heroku rake test units and heroku rake db test prepare 但对于两者 我都得到了大量的堆栈跟踪
  • 重命名远程分支

    我创建了一个本地分支 X 在某个时候我将其推送到远程服务器 来源 git push origin X 我意识到将分支命名为 X 并希望将其命名为 Y 是一个坏主意 问题是我已经将分支推送到存储库 从服务器中删除它并以这样的新名称推送它是否安
  • 在 Marshmallow 上不会调用 Spannable String 的绘制方法

    我的应用程序中有一个日历 日历是一个带有每个日期按钮的 GridView 我尝试用下面的课程给它们上色 public class CircleSpan extends ReplacementSpan private final float
  • 在 ActionBar 中获取 Switch 实例

    我设法在操作栏内放置了一个开关 如 Wi Fi 设置中一样 我把以下内容主菜单 xml menu 文件夹内的文件 menu menu
  • 保存和重用 SPARQL 查询的结果

    我正在使用 Jena 通过 Eclipse 查询 owl 文件 我想做一些连续的查询 每个新查询都将使用前一个查询的结果 我想在不同的 SELECT 中执行此操作 并每次保存查询结果 以便在新查询中再次使用它 我不想自己插入变量的值 而是从
  • JDialog 取消按钮

    如何在 Swing 中设置取消按钮JDialog 即如果用户按下键盘上的 取消 键 其操作会自动执行的按钮 通过以下方式向对方提供默认操作setDefaultButton对话框根窗格的方法 如果这有帮助 我正在寻找 WinForms 的类似
  • d3js在地图上强制布局

    我正在尝试在地图上放置一个力布局节点系统 某些节点在我使用的 json 文件中具有 lon 和 lat 值 其他节点只需连接 无需地理参考 我想将具有 lon 和 lat 值的节点放置在适当的位置 而其他节点只是为了连接 我发现了我遵循的这
  • Sqlalchemy 无法在事务块内运行

    我正在尝试从 python 脚本在 redshift 中运行查询 但出现错误 sqlalchemy exc InternalError psycopg2 InternalError ALTER EXTERNAL TABLE cannot r
  • 使用 childRouter 时的 Durandal 路由器/生命周期事件

    在使用 Durandal 构建的单页应用程序中 我有一个设置视图 其中包含不同的部分 我使用 childRouter 来解析不同的部分 在此应用程序中 许多代码挂钩到 Durandal 使用的组合生命周期事件 例如 这个自定义绑定 ko b
  • 如何引发 Shutil.SameFileError?

    我正在努力提高一个shutil SameFileError用于单元测试但未能成功 问题是没有引发错误 import unittest class TestErrors unittest TestCase Unit testing of er