设备上没有 space 后无法删除文件
can't delete a file after no space left on device
我正在几个硬盘上写一堆文件。我的所有文件都不能放在一个硬盘上,所以如果第一个文件超出 space,我会把它们写在下一个上。我抓住了 IOError 28 来解决这个问题。
我的确切问题是,当我尝试删除写入第一个磁盘的最后一个文件(不完整的文件)时,我得到一个我不完全理解的新异常。似乎 with-block 无法关闭文件,因为磁盘上没有 space。
我在 windows 并且磁盘已格式化为 NTFS。
有人能帮帮我吗
# Here's a sample code
# I recommend first to fill a disk to almost full with a large dummy file.
# On windows you could create a dummy file with
# 'fsutil file createnew large.txt 1000067000000'
import os
import errno
fill = 'J:/fill.txt'
try:
with open(fill, 'wb') as f:
while True:
n = f.write(b"[=11=]")
except IOError as e:
if e.errno == errno.ENOSPC:
os.remove(fill)
这是回溯:
Traceback (most recent call last):
File "nospacelef.py", line 8, in <module>
n = f.write(b"[=12=]")
IOError: [Errno 28] No space left on device
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "nospacelef.py", line 8, in <module>
n = f.write(b"[=12=]")
IOError: [Errno 28] No space left on device
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "nospacelef.py", line 11, in <module>
os.remove(fill)
WindowsError: [Error 32] The process cannot access the file because it is being used by another process: 'J:/fill.txt'
回答我自己的问题。
我向 python [1][2] 提交了错误。它已经在 3.3+ 中修复。我使用的 3.2 没有修复程序。我升级了我的 python 版本,所以我不再受这个问题的困扰。
我正在几个硬盘上写一堆文件。我的所有文件都不能放在一个硬盘上,所以如果第一个文件超出 space,我会把它们写在下一个上。我抓住了 IOError 28 来解决这个问题。
我的确切问题是,当我尝试删除写入第一个磁盘的最后一个文件(不完整的文件)时,我得到一个我不完全理解的新异常。似乎 with-block 无法关闭文件,因为磁盘上没有 space。
我在 windows 并且磁盘已格式化为 NTFS。
有人能帮帮我吗
# Here's a sample code
# I recommend first to fill a disk to almost full with a large dummy file.
# On windows you could create a dummy file with
# 'fsutil file createnew large.txt 1000067000000'
import os
import errno
fill = 'J:/fill.txt'
try:
with open(fill, 'wb') as f:
while True:
n = f.write(b"[=11=]")
except IOError as e:
if e.errno == errno.ENOSPC:
os.remove(fill)
这是回溯:
Traceback (most recent call last):
File "nospacelef.py", line 8, in <module>
n = f.write(b"[=12=]")
IOError: [Errno 28] No space left on device
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "nospacelef.py", line 8, in <module>
n = f.write(b"[=12=]")
IOError: [Errno 28] No space left on device
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "nospacelef.py", line 11, in <module>
os.remove(fill)
WindowsError: [Error 32] The process cannot access the file because it is being used by another process: 'J:/fill.txt'
回答我自己的问题。
我向 python [1][2] 提交了错误。它已经在 3.3+ 中修复。我使用的 3.2 没有修复程序。我升级了我的 python 版本,所以我不再受这个问题的困扰。