반응형
파이썬에서 잘못된 경로 문자를 제거하는 방법은 무엇입니까?
파이썬에서 잘못된 경로 문자(예: Windows의 "\" 또는 ":")를 제거하는 가장 교차 플랫폼 방법은 무엇입니까?
솔루션
이상적인 해결책은 없는 것 같기 때문에 나는 비교적 제한적이기로 결정하고 다음 코드를 사용했다.
def remove(value, deletechars):
for c in deletechars:
value = value.replace(c,'')
return value;
print remove(filename, '\/:*?"<>|')
해당 문자는 에 있으며, 현재 시스템에 따라 "\" 또는 ":"가 됩니다.
python을 사용하는 경우 경로와 관련된 교차 플랫폼 문제를 피하십시오.
불행히도, 허용되는 문자 집합은 파일 시스템마다 OS마다 다릅니다.
:
- 유니코드 문자 및 확장 문자 집합(128–255)의 문자를 포함하여 현재 코드 페이지의 거의 모든 문자를 이름에 사용합니다.
허용되는 문자 목록은 파일 시스템을 처음 포맷한 시스템의 OS 및 로케일에 따라 달라질 수 있습니다.
.NET은 와 를 가지고 있지만, 파이썬에서 그것들을 어떻게 불러야 할지 모르겠다.
- Mac OS: NUL은 항상 제외되며, "/"는 POSIX 계층에서 제외되며, ":"는 Apple API에서 제외됩니다.
- Linux:
가장 좋은 방법은 모든 플랫폼에서 지나치게 보수적이거나 파일 이름을 만들어 오류를 처리하는 것입니다.
여기서 가장 안전한 방법은 의심스러운 캐릭터를 교체하는 것입니다. 따라서 영숫자, -, _, 공백 또는 마침표가 아닌 모든 항목을 대체(또는 제거)할 수 있습니다. 그 방법은 다음과 같습니다.
import re
re.sub(r'[^\w_. -]', '_', filename)
위의 문자는 문자, , 또는 공백이 아닌 모든 문자를 이스케이프합니다. 따라서 전체 경로를 볼 경우 승인된 문자 목록에도 os.sep를 넣어야 합니다.
다음은 출력 예입니다.
In [27]: re.sub(r'[^\w\-_\. ]', '_', r'some\*-file._n\\ame')
Out[27]: 'some__-file._n__ame'
반응형
'개발하자' 카테고리의 다른 글
TypeScript 기반 React Native 앱에서 가져오기에 대한 절대 경로를 구성하려면 어떻게 해야 합니까? (0) | 2022.11.07 |
---|---|
Showing line numbers in IPython/Jupyter Notebooks (0) | 2022.11.06 |
미래의 인스턴스 <String?문자열 데이터 플러터/파이어베이스 대신 >' (0) | 2022.11.04 |
오른쪽 유형 스크립트 유형:Svelte에서 핸들러 변경 (0) | 2022.11.03 |
Flater - 데이터가 변경될 때 getx 컨트롤러가 업데이트되지 않음 (0) | 2022.11.03 |