以下代码会产生一个意外的exception:
open("52bbe674cdc81d4140099b84fa69eea4249bcceee75bcbe4838d911ab076547cfdad3c1c5197752a98e5525fe76613dbe52dcdb1a9a397669babce0f101d010142cffa000000.csv", "w") OSError: [Errno 36] File name too long: '52bbe674cdc81d4140099b84fa69eea4249bcceee75bcbe4838d911ab076547cfdad3c1c5197752a98e5525fe76613dbe52dcdb1a9a397669babce0f101d010142cffa000000.csv'
这是意外的,因为我的文件系统是ext4(根据维基百科)有一个255字节的文件名长度限制。 上面的文件名长度为144。
那么为什么当文件名长度限制还没有被超过时,Python会引发这个exception呢?
我找到了一个解决方案。 事实证明,我没有处理纯粹的ext4 —实际上ecryptfs分层在ext4之上,从以前的Ubuntu安装结转。 正如对这个相关问题的不被接受的答案所建议的那样,ecryptfs层对文件名长度施加了143个字符的限制。 在ecryptfs下的文件名长度限制的一个明确的答案可以在这里找到。