PermissionError: [Errno 13] 权限被拒绝传递变量但在硬编码时有效

问题描述

我正在尝试设置看门狗以将新文件提供给 dcmread 函数,但似乎无法通过 PermissionError。

        print("Watchdog received created event - % s." % event.src_path)
        home = r'C:\Users\name\PycharmProjects\TEST_DCM_DIR'
        fn = os.path.basename(event.src_path)
        print(fn)
        dcmpath = glob.glob(home + '\\' + fn)
        print(dcmpath[0])
        dcmpath2 = r'C:\Users\name\PycharmProjects\TEST_DCM_DIR\test.dcm'
        print(dcmpath2)
        ds = dcmread(dcmpath[0])

硬编码路径和变量路径都打印相同的文件路径,但是当我使用变量时,出现以下错误

File "C:\Users\name\PycharmProjects\venv\lib\site-packages\pydicom\filereader.py",line 861,in dcmread
fp = open(fp,'rb')

PermissionError: [Errno 13] Permission denied: 'C:\\Users\\name\\PycharmProjects\\TEST_DCM_DIR\\test.dcm'

当我通过硬编码路径时,代码工作正常,这让我认为这不是权限问题(来自搜索 stackoverflow)。我希望这与我编译路径的方式有关。我试过 os.path.join 方法 (dcmpath = os.path.join(home,fn)) 并使用 event.src_path 句柄也没有设法破解它。任何见解将不胜感激。我正在 Windows 机器上运行此代码

编辑:问题似乎是文件在从复制中释放之前正在被读取。在将路径传递给 dcmread 之前添加 time.sleep(2) 行解决了这个问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)