Name | pyfilename JSON |
Version |
0.5.0
JSON |
| download |
home_page | None |
Summary | Make names comply various filename constraints of Windows. |
upload_time | 2024-04-15 07:44:43 |
maintainer | None |
docs_url | None |
author | ilotoki0804 |
requires_python | <4.0,>=3.8 |
license | MIT |
keywords |
files
file
windows
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# pyfilename
**Make names comply various filename constraints of Windows.**
**윈도우의 복잡한 파일명 제한들을 만족시키는 안전한 이름을 만듭니다.**
윈도우는 POSIX 운영체제들과 달리 파일 이름에 매우 엄격한 제약이 있습니다.
pyfilename을 사용하면 제한된 문자를 제거하거나 전각 문자로 변환하여 기존 문자의 의미를 손상시키지 않고
윈도우에서 유효한 파일명을 생성해낼 수 있습니다.
> [!NOTE]
> 파일명과 폴더명은 같은 것이니 폴더명에도 안심하고 사용하세요.
## Installation
pip을 통해 이 프로젝트를 설치할 수 있습니다.
```console
pip install -U pyfilename
```
## Functions that pyfilename have
아래에서는 pyfilename에 있는 함수들을 간단히 설명합니다.
각 함수의 메소드나 자세한 기능에 대한 설명은 각 함수의 docstring을 참고하세요.
* `convert`: 안전한 파일명을 생성합니다.
* `revert`: 안전해진 파일명을 다시 원래 문자열로 되돌립니다.
* `is_safe`: 파일명이 안전하고 온전한지 확인합니다.
* `is_creatable`: 파일명이 '생성 가능한지' 확인합니다. 생성 시 파일명이 변경되는 것을 원하지 않으면 `is_safe`를 사용하세요.
## 예시
```python
>>> import pyfilename as pf
>>>
>>> pf.is_safe('hello_world?.txt') # Character '?' is invalid to use in file name
False
>>> safe_name = pf.convert('hello_world?.txt') # Convert to safe name
>>> safe_name
'hello_world?.txt'
>>> pf.is_safe(safe_name) # Now it's True.
True
```
## 주의사항
* 백슬래시(\\)의 대안 문자(⧵, REVERSE SOLIDUS OPERATOR)는 윈도우 기본 zip 파일 제작기에서 입력되지 못합니다. [반디집](https://kr.bandisoft.com/bandizip/)과 같은 다른 zip파일 생성 툴을 이용하거나 fullwidth 모드 대신 다른 모드를 사용하세요.
## 비슷한 프로젝트
[pathvalidate](https://github.com/thombashi/pathvalidate)는 파일 경로 문자열을 검사합니다. 하지만 대체 문자를 사용하는 등의 기능은 없습니다.
## 파일명 길이
pyfilename은 전체 경로가 아닌 파일명을 확인하는 라이브러리이고, 윈도우에서는 최대 경로 길이를 조절할 수 있기 때문에 일반화가 어려워 모든 함수들에서 파일명 길이는 확인되지 않습니다.
## Relese Note
* 0.5.0 (2024/04/??): 현대화 및 전체적인 개선 및 오류 수정
* 0.2.0 (2023/09/10): 전체적인 구현 변경
* 0.1.0: 첫 릴리즈
Raw data
{
"_id": null,
"home_page": null,
"name": "pyfilename",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.8",
"maintainer_email": null,
"keywords": "files, file, windows",
"author": "ilotoki0804",
"author_email": "ilotoki0804@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/08/4a/b3c798a7715f1e0a4c7b6f6a23b3d8db58fc18b233c85ab75989f89ddcf1/pyfilename-0.5.0.tar.gz",
"platform": null,
"description": "# pyfilename\n\n**Make names comply various filename constraints of Windows.**\n\n**\uc708\ub3c4\uc6b0\uc758 \ubcf5\uc7a1\ud55c \ud30c\uc77c\uba85 \uc81c\ud55c\ub4e4\uc744 \ub9cc\uc871\uc2dc\ud0a4\ub294 \uc548\uc804\ud55c \uc774\ub984\uc744 \ub9cc\ub4ed\ub2c8\ub2e4.**\n\n\uc708\ub3c4\uc6b0\ub294 POSIX \uc6b4\uc601\uccb4\uc81c\ub4e4\uacfc \ub2ec\ub9ac \ud30c\uc77c \uc774\ub984\uc5d0 \ub9e4\uc6b0 \uc5c4\uaca9\ud55c \uc81c\uc57d\uc774 \uc788\uc2b5\ub2c8\ub2e4.\npyfilename\uc744 \uc0ac\uc6a9\ud558\uba74 \uc81c\ud55c\ub41c \ubb38\uc790\ub97c \uc81c\uac70\ud558\uac70\ub098 \uc804\uac01 \ubb38\uc790\ub85c \ubcc0\ud658\ud558\uc5ec \uae30\uc874 \ubb38\uc790\uc758 \uc758\ubbf8\ub97c \uc190\uc0c1\uc2dc\ud0a4\uc9c0 \uc54a\uace0\n\uc708\ub3c4\uc6b0\uc5d0\uc11c \uc720\ud6a8\ud55c \ud30c\uc77c\uba85\uc744 \uc0dd\uc131\ud574\ub0bc \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n\n> [!NOTE]\n> \ud30c\uc77c\uba85\uacfc \ud3f4\ub354\uba85\uc740 \uac19\uc740 \uac83\uc774\ub2c8 \ud3f4\ub354\uba85\uc5d0\ub3c4 \uc548\uc2ec\ud558\uace0 \uc0ac\uc6a9\ud558\uc138\uc694.\n\n## Installation\n\npip\uc744 \ud1b5\ud574 \uc774 \ud504\ub85c\uc81d\ud2b8\ub97c \uc124\uce58\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n\n```console\npip install -U pyfilename\n```\n\n## Functions that pyfilename have\n\n\uc544\ub798\uc5d0\uc11c\ub294 pyfilename\uc5d0 \uc788\ub294 \ud568\uc218\ub4e4\uc744 \uac04\ub2e8\ud788 \uc124\uba85\ud569\ub2c8\ub2e4.\n\n\uac01 \ud568\uc218\uc758 \uba54\uc18c\ub4dc\ub098 \uc790\uc138\ud55c \uae30\ub2a5\uc5d0 \ub300\ud55c \uc124\uba85\uc740 \uac01 \ud568\uc218\uc758 docstring\uc744 \ucc38\uace0\ud558\uc138\uc694.\n\n* `convert`: \uc548\uc804\ud55c \ud30c\uc77c\uba85\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4.\n* `revert`: \uc548\uc804\ud574\uc9c4 \ud30c\uc77c\uba85\uc744 \ub2e4\uc2dc \uc6d0\ub798 \ubb38\uc790\uc5f4\ub85c \ub418\ub3cc\ub9bd\ub2c8\ub2e4.\n* `is_safe`: \ud30c\uc77c\uba85\uc774 \uc548\uc804\ud558\uace0 \uc628\uc804\ud55c\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4.\n* `is_creatable`: \ud30c\uc77c\uba85\uc774 '\uc0dd\uc131 \uac00\ub2a5\ud55c\uc9c0' \ud655\uc778\ud569\ub2c8\ub2e4. \uc0dd\uc131 \uc2dc \ud30c\uc77c\uba85\uc774 \ubcc0\uacbd\ub418\ub294 \uac83\uc744 \uc6d0\ud558\uc9c0 \uc54a\uc73c\uba74 `is_safe`\ub97c \uc0ac\uc6a9\ud558\uc138\uc694.\n\n## \uc608\uc2dc\n\n```python\n>>> import pyfilename as pf\n>>>\n>>> pf.is_safe('hello_world?.txt') # Character '?' is invalid to use in file name\nFalse\n>>> safe_name = pf.convert('hello_world?.txt') # Convert to safe name\n>>> safe_name\n'hello_world\uff1f.txt'\n>>> pf.is_safe(safe_name) # Now it's True.\nTrue\n```\n\n## \uc8fc\uc758\uc0ac\ud56d\n\n* \ubc31\uc2ac\ub798\uc2dc(\\\\)\uc758 \ub300\uc548 \ubb38\uc790(\u29f5, REVERSE SOLIDUS OPERATOR)\ub294 \uc708\ub3c4\uc6b0 \uae30\ubcf8 zip \ud30c\uc77c \uc81c\uc791\uae30\uc5d0\uc11c \uc785\ub825\ub418\uc9c0 \ubabb\ud569\ub2c8\ub2e4. [\ubc18\ub514\uc9d1](https://kr.bandisoft.com/bandizip/)\uacfc \uac19\uc740 \ub2e4\ub978 zip\ud30c\uc77c \uc0dd\uc131 \ud234\uc744 \uc774\uc6a9\ud558\uac70\ub098 fullwidth \ubaa8\ub4dc \ub300\uc2e0 \ub2e4\ub978 \ubaa8\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc138\uc694.\n\n## \ube44\uc2b7\ud55c \ud504\ub85c\uc81d\ud2b8\n\n[pathvalidate](https://github.com/thombashi/pathvalidate)\ub294 \ud30c\uc77c \uacbd\ub85c \ubb38\uc790\uc5f4\uc744 \uac80\uc0ac\ud569\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \ub300\uccb4 \ubb38\uc790\ub97c \uc0ac\uc6a9\ud558\ub294 \ub4f1\uc758 \uae30\ub2a5\uc740 \uc5c6\uc2b5\ub2c8\ub2e4.\n\n## \ud30c\uc77c\uba85 \uae38\uc774\n\npyfilename\uc740 \uc804\uccb4 \uacbd\ub85c\uac00 \uc544\ub2cc \ud30c\uc77c\uba85\uc744 \ud655\uc778\ud558\ub294 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc774\uace0, \uc708\ub3c4\uc6b0\uc5d0\uc11c\ub294 \ucd5c\ub300 \uacbd\ub85c \uae38\uc774\ub97c \uc870\uc808\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 \uc77c\ubc18\ud654\uac00 \uc5b4\ub824\uc6cc \ubaa8\ub4e0 \ud568\uc218\ub4e4\uc5d0\uc11c \ud30c\uc77c\uba85 \uae38\uc774\ub294 \ud655\uc778\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n\n## Relese Note\n\n* 0.5.0 (2024/04/??): \ud604\ub300\ud654 \ubc0f \uc804\uccb4\uc801\uc778 \uac1c\uc120 \ubc0f \uc624\ub958 \uc218\uc815\n* 0.2.0 (2023/09/10): \uc804\uccb4\uc801\uc778 \uad6c\ud604 \ubcc0\uacbd\n* 0.1.0: \uccab \ub9b4\ub9ac\uc988\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Make names comply various filename constraints of Windows.",
"version": "0.5.0",
"project_urls": {
"Changelog": "https://github.com/ilotoki0804/pyfilename#relese-note",
"Issues": "https://github.com/ilotoki0804/pyfilename/issues",
"Repository": "https://github.com/ilotoki0804/pyfilename"
},
"split_keywords": [
"files",
" file",
" windows"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "0b017b27311f0ab478a47287b574a4371fa4611d97dd15e0008d8749359c6e64",
"md5": "4420105631a188985e0608cdca243d44",
"sha256": "43ee4331c7b097f56a93f9c96d633e1ddfcbcd9cd3113aa01d0a03b5fea6612d"
},
"downloads": -1,
"filename": "pyfilename-0.5.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4420105631a188985e0608cdca243d44",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 8494,
"upload_time": "2024-04-15T07:44:42",
"upload_time_iso_8601": "2024-04-15T07:44:42.014010Z",
"url": "https://files.pythonhosted.org/packages/0b/01/7b27311f0ab478a47287b574a4371fa4611d97dd15e0008d8749359c6e64/pyfilename-0.5.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "084ab3c798a7715f1e0a4c7b6f6a23b3d8db58fc18b233c85ab75989f89ddcf1",
"md5": "d1dc5a3bc25bf1643a21293bd8296b44",
"sha256": "e30f98a2d51e1911a9450e093c20202280b881fd21584aa1483a5f066215aa7a"
},
"downloads": -1,
"filename": "pyfilename-0.5.0.tar.gz",
"has_sig": false,
"md5_digest": "d1dc5a3bc25bf1643a21293bd8296b44",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 7641,
"upload_time": "2024-04-15T07:44:43",
"upload_time_iso_8601": "2024-04-15T07:44:43.728152Z",
"url": "https://files.pythonhosted.org/packages/08/4a/b3c798a7715f1e0a4c7b6f6a23b3d8db58fc18b233c85ab75989f89ddcf1/pyfilename-0.5.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-15 07:44:43",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ilotoki0804",
"github_project": "pyfilename#relese-note",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pyfilename"
}