我想在tmpfs(CentOS 6.5下)中创建一个文件,如下所示:
fpath = '/tmpfs_mounted/with/long/file/name'
with open(fpath, 'w') as fd:
write(somedata)
...
但我收到了IOError: [Errno 36] File name too long: ...
错误,如何解决?
答案 0 :(得分:1)
好的,我明白了。 Linux确实具有256字节的基本名称限制,请参阅here以获取所有限制的完整列表。一个简单的代码可以验证:
# -*- encoding:utf8 -*-
import os
if __name__ == '__main__':
base = 'x'
basename = ''
while 1:
basename += base
try:
with open(basename, 'w') as fd:
os.remove(basename)
except Exception as ex:
print('length %d failed' % len(basename))
break
当我将GBK编码的文件名复制到Tmpfs中时遇到问题,我将GBK文件名转换为UTF8,然后更改了长度:
>>> s = u'中'
>>> len(s.encode('gbk'))
>>> 2
>>> len(s.encode('utf8'))
>>> 3
因此,utf8文件名可能超过255个字节。