2013-11-20 5 views
1

파일 확장자는 일반적으로 마지막 기간 이후의 모든 것입니다. 파일 이름에 "."이 없으면 확장자가 없습니다. 리눅스에서 숨겨진 파일처럼 파일 이름이 점으로 시작하면 어떻게됩니까? 파이썬파일 확장자와 .dot로 시작하는 숨김 파일을 구별합니다.

는 파일 확장명을 ... 없다

>>> os.path.splitext("base.ext") 
('base', '.ext') 
>>> os.path.splitext(".ext")                        
('.ext', '') 

떠들썩한 파티에서의 통상적 인 방법은 단지 확장없이베이스 부 (Extract filename and extension in Bash)가 다른 결과를 생성 ...

>>> filename=".ext" 
>>> extension="${filename##*.}" 
>>> base="${filename%.*}" 
>>> echo $base 

>>> echo $extension 
ext 

코드에서이 같은 파일 이름을 어떻게 처리해야합니까? 표준이 있습니까? 운영 체제마다 다르나요? 아니면 가장 일반적/일관성이 있습니까?

[편집]
는 그냥 ".pdf"의 파일을 가지고 있다고 할 수 있습니다. 예를 들어 열려있는 대화 상자에서 숨김 파일 표시 및 2. 모든 파일 확장자 허용없이 기본값으로 나열해야합니까?

  1. 은 숨겨진 파일입니다 - 그것은 마침표로 시작
  2. 실제로 .PDF를인가 (파일 이름 규칙에 의해, 그것은 PDF 데이터가 있는지 확인) 또는 파일 witn의 없는 확장?

답변

1

POSIX 기반 운영 체제의 파일 확장명은 고유 한 의미가 없습니다. 그들은 단지 대회 일뿐입니다. 확장 기능을 변경해도 파일 자체를 참조하는 데 사용 된 이름 만 변경되지 않습니다.

파일이있을 수 여러 확장 :

.bashrc 
README 
ABOUT 
TODO 
:

source.tgz 

다른 파일은 모두 확장을하지 않을 수 있습니다

source.tar.gz 

는 때때로 하나의 확장은 두 가지의 수축을 나타냅니다

일반적으로 확장을 정의하는 것은 그것이 후행 compone이라는 것입니다 비 초기 기간 다음에 오는 파일 이름의 NT. 의미는 파일 이름을 검사하는 응용 프로그램에 의해 지정됩니다. PDF 리더는 이름이 .pdf 인 파일에만 집중할 수 있지만 이름이없는 유효한 PDF 파일을 열지 않아야합니다.

extension="${filename##*.}" 

단순히 파일명 마침표로 시작하지 않는 경우에만 (최종) 확장을 리턴 파라미터 확장 연산자의 적용이라고

참고. 확장 연산자가 아니며 접두사 제거 연산자입니다.

+0

고마워요! 나는 이것들을 알고있다, 편집을 보아라. '.bashrc '의 경우에는 확장자가 아닌 주 파일 이름이라는 것이 명백합니다. '.pdf'는 어떨까요? 동일한 규칙에 따라, * no * 확장자가 있어야합니다. – jozxyqk

+0

파일 내용과 확장명 (있는 경우) 사이에 필요한 연결이 운영 체제에 달려 있는지 여부. '.pdf' *는 PDF 파일을 가리 키기 위해'.pdf '를 사용하는 것에 익숙하기 때문에 확장자가있는 빈 파일 이름처럼 보입니다.'.udn'이 무엇인지 물어보십시오. 간단히 말해서 마침표로 시작하는 파일입니까, 익숙하지 않은 데이터 유형의 확장자입니까? 따라서 파일 이름 지정 방법에 대한 엄격한 규칙이 없으므로 좋은 대화 상자를 사용하여 모든 파일을 표시하거나 사용자 지정 필터를 제공 할 수 있습니다. – chepner

+0

이것은 정확하게 요점입니다. 열린 파일 대화 상자가 내부 split-extension 함수로 빌드 된 경우 split-extension이 선택해야합니까? 상황에 민감해야한다고 생각하지 않습니다. – jozxyqk