2016-06-23 10 views
1

を私は(CentOSの6.5下)tmpfsの内のファイルを作成したい、このように:のpython:例外IOError:[errnoを36]長すぎるファイル名:

fpath = '/tmpfs_mounted/with/long/file/name' 
with open(fpath, 'w') as fd: 
    write(somedata) 
... 

しかし、私はIOError: [Errno 36] File name too long: ...エラーを得た、どのようにそれを修正するには?

+0

あなたが使っているOSは? LinuxまたはWindows ..? –

+0

Pythonが「ファイルシステムの制限よりも短いファイル名に対して、OSError:\ [Errno 36 \]ファイル名が長すぎます」という理由は何ですか?](http://stackoverflow.com/questions/34503540/why-does-python-ファイル名が長すぎるとファイル名が短くなります) –

+0

@cyclops:スレッドを閲覧しましたが、私の場合はそうではありません。 – coanor

答えて

1

[OK]を取得しました。 Linuxは実際には256バイトのベース名の制限を持っています。すべての制限の完全なリストについてはhereを参照してください。簡単なコードはそれを確認することができます。私はtmpfsのにGBKエンコードされたファイル名をコピーするとき、私は、問題が発生した

# -*- 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 

を、と私はUTF8にGBKファイル名を転送し、その後、長さが変更されました:そう

>>> s = u'中' 
>>> len(s.encode('gbk')) 
>>> 2 
>>> len(s.encode('utf8')) 
>>> 3 

utf8ファイル名は255バイトを超えることがあります。

関連する問題