2016-06-23 16 views
1

를 내가 (CentOS는 6.5 이하)의 tmpfs 내에서 파일을 만들려면이 같은 :파이썬 : IO 오류 : [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 ..? 리눅스 또는 windows ..? –

+0

[파이썬은 왜 파일 시스템의 한계보다 짧은 파일명을 위해 "[Errno 36 \] 파일 이름이 너무 길어"OSError :를 제공합니까?] (http://stackoverflow.com/questions/34503540/why-does-python- 파일 이름이 너무 짧음) –

+0

@cyclops : 스레드를 찾았지만 나에게는 그렇지 않다. – coanor

답변

1

좋아, 알았다. 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 바이트를 초과 할 수 있습니다.