엄범


```python

os.getcwd() # working directory == python command를 실행한 path

os.path.dirname(os.path.abspath(__file__)) # 현재 파일이 위치한 directory

```

디렉토리의 파일을 얻는 방법은 ``py os.listdir()``과 ``py glob.glob()`` 두 가지가 있다.

3.4 부터 ``py pathlib``이라는 고수준 파일 시스템 모듈이 있으니 이걸 쓰는게 좋다.

```python

from pathlib import Path

p = Path('.')

attack_packages = [x.resolve() for x in p.iterdir() if x.is_dir()]

a.suffix    # asdf.py이면 .py 반환

a.stem      # asdf.py이면 asdf 반환

```



os.listdir(path)

filename만 반환한다. 그래서 ``py os.path.join(dir, filename)``으로 이어줘야 한다.


glob.glob(patten, *, recursive=False)

filepath를 반환하며 `` patten`` 검색, `` recursive`` 검색 등을 지원한다.

path를 반환하기 때문에 파일 이름만 얻어내려면 ``py os.path.split(str)``로 잘라내야 한다.

```python

>>> fpaths = glob.glob("./imgs/*")

>>> fpaths

['./imgs/4.png', './imgs/2.png']

>>> fnames = [os.path.split(f) for f in fpaths]

>>> fnames

[('./imgs', '4.png'), ('./imgs', '2.png')]

>>> fnames = [os.path.split(f)[1] for f in fpaths]

>>> fnames

['4.png', '2.png']

>>> fnames = [os.path.splitext(f)[0] for f in fnames]

>>> fnames

['4', '2']

# 이렇게도 할 수 있는데 좀 직관적이지 못하다.

files2 = list(map(lambda x: os.path.split(x)[1], fullpaths))

```

``py recursive=True``인 경우 경로 끝에 `` **``을 적어야 하위 디렉토리까지 recursive하게 탐색한다.

`` */*/...``으로 타고 들어가는 방법도 있으니 참고.



아무튼, 파일 이름만 필요한 경우 `` os.listdir()``을 사용하고,

fullpath가 필요하거나 특정 파일만 검색하거나 recursive 검색 해야하는 경우 `` glob.glob()``을 사용하면 된다.

이를 반대로 사용하면 약간 번거로운 과정을 거쳐야한다.


파일 존재 유무 확인

```python
import os
os.path.isfile(file)
os.path.isdir(diretory)
os.path.exists(file_or_directory)
```
`` *`` 같은 메타 문자는 안먹힌다.