导致:IOError:[Errno 28]设备上没有剩余空间:磁盘上有很多空间的’..results32766.html’

导致:IOError:[Errno 28]设备上没有剩余空间:磁盘上有很多空间的’..results32766.html’,第1张

概述我正在运行一个导致上述错误的 Python脚本.这个不寻常的事情是这个脚本在不同的机器上运行,没有任何问题. 不同的是在机器上导致我正在写入外部硬盘驱动器的问题.为了使事情甚至这个脚本,这个脚本已经在问题机器上运行,并且已经写入了超过30,000个文件. 一些相关信息(导致错误的代码): nPage = 0while nPage != -1: for d in data: 我正在运行一个导致上述错误的 Python脚本.这个不寻常的事情是这个脚本在不同的机器上运行,没有任何问题.

不同的是在机器上导致我正在写入外部硬盘驱动器的问题.为了使事情甚至这个脚本,这个脚本已经在问题机器上运行,并且已经写入了超过30,000个文件.

一些相关信息(导致错误的代码):

nPage = 0while nPage != -1:    for d in data:        if len(d.contents) > 1:            if '<script' in str(d.contents):                l = str(d.contents[1])                start = l.find('http://')                end = l.find('>',start)                out = get_records.openURL(l[start:end])                print COUNT                with open('../results/'+str(COUNT)+'.HTML','w') as f:                    f.write(out)                COUNT += 1    nPage = nextPage(mOut,False)

我写的目录:

10:32@lorax:~/econ/estc/bin$ll ../total 56drwxr-xr-x 3 boincuser boincuser  4096 2011-07-31 14:29 ./drwxr-xr-x 3 boincuser boincuser  4096 2011-07-31 14:20 ../drwxr-xr-x 2 boincuser boincuser  4096 2011-08-09 10:38 bin/lrwxrwxrwx 1 boincuser boincuser    47 2011-07-31 14:21 results -> /media/cavalry/server_backup/econ/estc/results//-rw-r--r-- 1 boincuser boincuser 44759 2011-08-09 10:32 test.HTML

证明有足够的空间

10:38@lorax:~/econ/estc/bin$df -hfilesystem            Size  Used Avail Use% Mounted on/dev/sda1             9.0G  5.3G  3.3G  63% /none                  495M  348K  495M   1% /devnone                  500M  164K  500M   1% /dev/shmnone                  500M  340K  500M   1% /var/runnone                  500M     0  500M   0% /var/locknone                  9.0G  5.3G  3.3G  63% /var/lib/ureadahead/deBUGfs/dev/sdc10            466G  223G  244G  48% /media/cavalry

我尝试过的一些事情:

>将写入的路径更改为直接位置,而不是通过链接
>重新启动机器
>卸载并重新安装驱动器

解决方法 在任何情况下,ENOSPC(“设备上剩余空间”)错误都将被触发,因为缺少空间,任何地方无法将I / O *** 作的数据或元数据写入相关数据或元数据.这并不总是意味着磁盘空间 – 它可能意味着物理磁盘空间,逻辑空间(例如最大文件长度),特定数据结构或地址空间中的空间.例如,如果目录表(vfat)中没有空格,或没有剩余的任何索引节点,您可以获取它.它大概意味着“我找不到写下来的地方”.

特别是在Python中,这可能发生在任何写I / O *** 作中.它可能在f.write期间发生,但它也可能发生在open,f.flush甚至f.close上.发生的地方提供了一个至关重要的线索,因为它的确 – 如果发生在开放的时候,没有足够的空间来写入条目的元数据,如果它发生在f.write,f.flush或f.close那里没有足够的磁盘空间,或者您已超过最大文件大小.

如果给定目录中的文件系统是vfat,那么您将在与之相同的时间内达到最大文件限制.该限制应该是2 ^ 16个目录条目,但是如果我正确地回忆一些其他因素可能会影响它(例如一些文件需要多个条目).

最好避免在目录中创建这么多文件.很少的文件系统很容易处理这么多的目录条目.除非您确定文件系统与目录中的许多文件兼容,否则可以考虑另一策略(例如创建更多目录).

附:还不要相信剩余的磁盘空间 – 一些文件系统为root保留一些空间,而其他文件系统会计算可用空间,并给出一个不正确的数字.

总结

以上是内存溢出为你收集整理的导致:IOError:[Errno 28]设备上没有剩余空间:磁盘上有很多空间的’../results/32766.html’全部内容,希望文章能够帮你解决导致:IOError:[Errno 28]设备上没有剩余空间:磁盘上有很多空间的’../results/32766.html’所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1143525.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存