我将以下 pandas 数据框导出为CSV文件时遇到了错误。我的硬盘有足够的空间。
OSError: [Errno 28] No space left on device
这可能是什么原因呢?先行致谢。
OSError: [Errno 28] No space left on device
这可能是什么原因呢?先行致谢。
OSError: [Errno 28] No space left on device:
但是,我有足够的空间:
$ df -h
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/dm-0 5,6G 3,2G 2,1G 62% /
udev 10M 0 10M 0% /dev
tmpfs 4,8G 481M 4,3G 10% /run
tmpfs 12G 8,0K 12G 1% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 12G 0 12G 0% /sys/fs/cgroup
tmp 945M 23M 858M 3% /tmp
var 5,6G 3,3G 2,0G 64% /var
data 20G 11G 8,6G 56% /data
$ df -hi
Sys. de fichiers Inœuds IUtil. ILibre IUti% Monté sur
/dev/dm-0 367K 307K 61K 84% /
udev 3,0M 365 3,0M 1% /dev
tmpfs 3,0M 597 3,0M 1% /run
tmpfs 3,0M 2 3,0M 1% /dev/shm
tmpfs 3,0M 9 3,0M 1% /run/lock
tmpfs 3,0M 13 3,0M 1% /sys/fs/cgroup
tmp 61K 5,1K 56K 9% /tmp
var 367K 95K 273K 26% /var
data 1,3M 1,3M 0 100% /data
已经没有更多的inode(文件)空间。
这显然是由于会话管理引起的:
$ du --max-depth=1 --inodes -h /data/my-python-program/data/
1,2M /data/base-eelv/data/sessions
178 /data/base-eelv/data/medias
快速解决方法是清空会话目录。
彻底解决方法是自动清理,但目前我还没有搜索如何实现这一点。
假设您的磁盘确实有足够的空间,即磁盘空间没有任何问题(临时文件已删除,操作系统正确报告了可用空间)...
在使用Pandas导出数据时,特别是当数据框过大以至于无法正常处理写入操作时,会触发此错误。您可以尝试将数据框分批写入CSV文件中。手动操作如下:
INTERVAL = 50
num_rows = len(df)
final_index = num_rows - 1
indices = list(range(0, final_index, INTERVAL))
indices.append(final_index)
for i in range(len(indices) - 1):
start = indices[i]
end = indices[i+1]
table_segment = df.iloc[start:end+1]
if i == 0:
table_segment.to_csv("./test2.csv")
else:
table_segment.to_csv("./test2.csv", mode = 'a', header = False)
编辑:或者,对于pandas数据框中的to_csv函数,(新的?)chunksize参数也可以实现相同的功能:
df.to_csv(path_or_buf="./test3.csv", chunksize=INTERVAL)
尝试截断/var/log目录下的.log文件
示例:
sudo truncate -s 0 /var/log/celery/*log
sudo truncate -s 0 /var/www/html/app/stderr.log
ENOSPC
(“设备上没有剩余空间”)错误。这并不总是指磁盘空间-它可能意味着物理磁盘空间、逻辑空间(例如最大文件长度)、某个数据结构或地址空间中的空间。例如,如果目录表(vfat)中没有空间或没有i节点,则可能会出现这种情况。这大致意味着“我找不到可以记录这个的位置”。rm -r /tmp/
删除 \tmp
目录我正在使用Docker容器,并通过增加其交换空间来绕过错误。