动手学习深度学习:[Errno 22] Invalid argument: ‘..\\data\\snli_1.0\\Icon\r‘

最近在B站上看李沐大神的动手学习深度学习V2,在跑他的源码natural-language-inference-and-dataset时,第一个块就出现了如下的报错信息:

OSError                                   Traceback (most recent call last)
<ipython-input-1-2b8316634310> in <module>
     10     '9fcde07509c7e87ec61c640c1b2753d9041758e4')
     11 
---> 12 data_dir = d2l.download_extract('SNLI')
     13 # data_dir = "..\data\snli_1.0"

D:\ProgramData\Anaconda3\envs\pytorch\lib\site-packages\d2l\torch.py in download_extract(name, folder)
    405     else:
    406         assert False, 'Only zip/tar files can be extracted.'
--> 407     fp.extractall(base_dir)
    408     return os.path.join(base_dir, folder) if folder else data_dir
    409 

D:\ProgramData\Anaconda3\envs\pytorch\lib\zipfile.py in extractall(self, path, members, pwd)
   1645 
   1646         for zipinfo in members:
-> 1647             self._extract_member(zipinfo, path, pwd)
   1648 
   1649     @classmethod

D:\ProgramData\Anaconda3\envs\pytorch\lib\zipfile.py in _extract_member(self, member, targetpath, pwd)
   1699 
   1700         with self.open(member, pwd=pwd) as source, \
-> 1701              open(targetpath, "wb") as target:
   1702             shutil.copyfileobj(source, target)
   1703 

OSError: [Errno 22] Invalid argument: '..\\data\\snli_1.0\\Icon\r'

在网上并没有找到比较好的解决方法,研究了一下午,终于解决了。

报错的原因是SNLI数据集的压缩文件"snli_1.0.zip"里面有两个路径为“snli_1.0\Icon\r”和“’__MACOSX/snli_1.0/._Icon\r’”的文件,导致无法解析此路径进而导致整个文件无法解压。
解决方法有两个:
方法一(有点麻烦):把"snli_1.0.zip"里的两个Icon文件删除
删除这两个文件后,“snli_1.0.zip"就能顺利解压,问题就解决了。但是要重写函数download_extract(具体方法是在download和extract之间把两个Icon删除了)或者写脚本删除两个Icon文件。
方法二:手动解压数据集"snli_1.0.zip”
找到data文件夹,手动把数据集"snli_1.0.zip"解压了(选解压到当前文件夹),然后把data_dir赋值为数据集解压后的路径(就是把data_dir = d2l.download_extract('SNLI')改为data_dir = " ..\data\snli_1.0",其它用到了的方法也要记得改)就可以运行啦。

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

打孔猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值