CodeGym /์ž๋ฐ” ์ฝ”์Šค /Python SELF KO /๋‚ด์žฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๋‚ด์žฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

Python SELF KO
๋ ˆ๋ฒจ 14 , ๋ ˆ์Šจ 4
์‚ฌ์šฉ ๊ฐ€๋Šฅ

8.1 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ os

Python์—๋Š” os์™€ platform๋ผ๋Š” ๋‚ด์žฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์–ด. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์€ ์šด์˜์ฒด์ œ์™€์˜ ์ƒํ˜ธ์ž‘์šฉ๊ณผ ์šด์˜์ฒด์ œ ์ •๋ณด๋ฅผ ์–ป๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด.

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์€ ํŒŒ์ผ ์‹œ์Šคํ…œ, ํ”„๋กœ์„ธ์Šค, ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ฐ ์šด์˜์ฒด์ œ์˜ ๋‹ค๋ฅธ ์ธก๋ฉด๊ณผ ๊ด€๋ จ๋œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค˜. ์ง€๊ธˆ์€ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ์‚ดํŽด๋ณผ ๊ฑฐ์•ผ.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ os

os ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์šด์˜์ฒด์ œ์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์œ„ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด. ํŒŒ์ผ ์‹œ์Šคํ…œ, ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ, ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋“ฑ๊ณผ ๊ด€๋ จ๋œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด.

ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ์–ป๊ธฐ:


import os

cwd = os.getcwd()
print("Current Working Directory:", cwd) # ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ

ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ๋ณ€๊ฒฝ:


os.chdir('/path/to/directory') # ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ๋กœ ๋ณ€๊ฒฝ

์ƒˆ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ:


os.mkdir('new_directory') # ์ƒˆ๋กœ์šด ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ

๋””๋ ‰ํ† ๋ฆฌ ์‚ญ์ œ:


os.rmdir('new_directory') # ๋””๋ ‰ํ† ๋ฆฌ ์‚ญ์ œ

ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ ๋ชฉ๋ก:


files = os.listdir('.')
print("Files and directories:", files) # ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ† ๋ฆฌ ๋ชฉ๋ก

ํŒ: ๋””๋ ‰ํ† ๋ฆฌ, ์นดํƒˆ๋กœ๊ทธ, ํด๋”๋ผ๋Š” ์šฉ์–ด๋Š” ์‚ฌ์‹ค ๊ฐ™์€ ๊ฑธ ์˜๋ฏธํ•ด. ๊ทธ๋ƒฅ ๋‹ค๋ฅธ ์šด์˜์ฒด์ œ์—์„œ ์˜จ ์šฉ์–ด์ผ ๋ฟ์ด์•ผ.

ํ™˜๊ฒฝ ๋ณ€์ˆ˜์™€ ์ž‘์—…ํ•˜๋Š” ๋ฒ•์„ ๋ฐฐ์šฐ๋Š” ๊ฒƒ๋„ ์œ ์šฉํ•  ๊ฑฐ์•ผ. ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” ์šด์˜์ฒด์ œ์˜ ๋ณ€์ˆ˜ ๊ฐ™์€ ๊ฑฐ๋ผ์„œ, ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ฝ๊ฑฐ๋‚˜ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด.

ํ™˜๊ฒฝ ๋ณ€์ˆ˜์˜ ๊ฐ’ ์–ป๊ธฐ:


home_dir = os.getenv('HOME')
print("Home Directory:", home_dir) # ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ

ํ™˜๊ฒฝ ๋ณ€์ˆ˜์˜ ๊ฐ’ ์„ค์ •:


os.environ['MY_VAR'] = 'my_value' # ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

8.2 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ platform

platform ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” Python์ด ์‹คํ–‰๋˜๋Š” ํ”Œ๋žซํผ ์ •๋ณด๋ฅผ ์–ป๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด. ์šด์˜์ฒด์ œ, CPU ์•„ํ‚คํ…์ฒ˜, Python ๋ฒ„์ „ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์•Œ ์ˆ˜ ์žˆ์–ด.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ platform์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ

์šด์˜์ฒด์ œ:


import platform

os_name = platform.system()
print("Operating System:", os_name) # ์šด์˜์ฒด์ œ

๋„คํŠธ์›Œํฌ์—์„œ์˜ ์ปดํ“จํ„ฐ ์ด๋ฆ„ (hostname):


node_name = platform.node()
print("Node Name:", node_name) # ๋…ธ๋“œ ์ด๋ฆ„

์šด์˜์ฒด์ œ ๋ฆด๋ฆฌ์ฆˆ:


os_release = platform.release()
print("OS Release:", os_release) # ์šด์˜์ฒด์ œ ๋ฆด๋ฆฌ์ฆˆ

์šด์˜์ฒด์ œ ๋ฒ„์ „:


os_version = platform.version()
print("OS Version:", os_version) # ์šด์˜์ฒด์ œ ๋ฒ„์ „

CPU ์•„ํ‚คํ…์ฒ˜:


architecture = platform.architecture()
print("Architecture:", architecture) # ์•„ํ‚คํ…์ฒ˜

ํ”„๋กœ์„ธ์„œ ํƒ€์ž…:


processor = platform.processor()
print("Processor:", processor) # ํ”„๋กœ์„ธ์„œ

Python ๋ฒ„์ „:


python_version = platform.python_version()
print("Python Version:", python_version) # Python ๋ฒ„์ „

Python ์ปดํŒŒ์ผ๋Ÿฌ:


python_compiler = platform.python_compiler()
print("Python Compiler:", python_compiler) # Python ์ปดํŒŒ์ผ๋Ÿฌ

์•„์ง๋„ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด, ์ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด์„œ ๋„ค ์ปดํ“จํ„ฐ๋ฅผ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ˆˆ์œผ๋กœ ํ•œ ๋ฒˆ ๋ด๋ด:


import platform

print("Operating System:", platform.system())
print("Node Name:", platform.node())
print("OS Release:", platform.release())
print("OS Version:", platform.version())
print("Machine:", platform.machine())
print("Processor:", platform.processor())
print("Architecture:", platform.architecture())
print("Python Version:", platform.python_version())
print("Python Compiler:", platform.python_compiler())

8.3 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ sys

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ sys๋Š” Python ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ผ๋ถ€์ด๊ณ , Python ์ธํ„ฐํ”„๋ฆฌํ„ฐ์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œ๊ณตํ•ด. ์‹คํ–‰ ํ™˜๊ฒฝ ์ •๋ณด ์–ป๊ธฐ, ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ, ์‹œ์Šคํ…œ์˜ ๋‹ค์–‘ํ•œ ์ปดํฌ๋„ŒํŠธ์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์— ์œ ์šฉํ•ด.

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์žฌ๋ฏธ์žˆ๋Š” ๊ฒƒ๋“ค์„ ํ•  ์ˆ˜ ์žˆ์–ด.

1. ๋ช…๋ น์ค„ ์ธ์ž

sys ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” sys.argv ๋ฆฌ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์Šคํฌ๋ฆฝํŠธ์— ์ „๋‹ฌ๋œ ๋ช…๋ น์ค„ ์ธ์ž๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค˜.

2. ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ

ํ•จ์ˆ˜ sys.exit()๋Š” ์ฃผ์–ด์ง„ ์ข…๋ฃŒ ์ƒํƒœ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์„ ์ข…๋ฃŒํ•˜๊ฒŒ ํ•ด. 0์€ ๋ณดํ†ต ์„ฑ๊ณต์ ์ธ ์ข…๋ฃŒ๋ฅผ ์˜๋ฏธํ•˜๊ณ , 0์ด ์•„๋‹Œ ๊ฐ’์€ ์˜ค๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด.


import sys

if len(sys.argv) < 2:
    print("์˜ค๋ฅ˜: ์ธ์ž๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Œ")
    sys.exit(1)
            
print("๋ชจ๋“  ์ธ์ž๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ง€์ •๋จ")
sys.exit(0)

3. ๋ชจ๋“ˆ ๊ฒ€์ƒ‰ ๊ฒฝ๋กœ

sys.path ๋ฆฌ์ŠคํŠธ๋Š” Python ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ๋ชจ๋“ˆ์„ ์ฐพ๊ธฐ ์œ„ํ•ด ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ํฌํ•จํ•ด. ๋ชจ๋“ˆ ๊ฒ€์ƒ‰์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด ์ด ๋ฆฌ์ŠคํŠธ์— ์ƒˆ ๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์–ด.


import sys

print("๋ชจ๋“ˆ ๊ฒ€์ƒ‰ ๊ฒฝ๋กœ:")
for path in sys.path:
    print(path)
            
# ์ƒˆ๋กœ์šด ๊ฒฝ๋กœ ์ถ”๊ฐ€
sys.path.append('/path/to/my/modules')
print("์—…๋ฐ์ดํŠธ๋œ ๋ชจ๋“ˆ ๊ฒ€์ƒ‰ ๊ฒฝ๋กœ ๋ฆฌ์ŠคํŠธ:", sys.path)

4. ์‹œ์Šคํ…œ ์ •๋ณด

sys ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” Python๊ณผ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด, ์˜ˆ๋ฅผ ๋“ค์–ด Python ๋ฒ„์ „๊ณผ ํ”Œ๋žซํผ ๊ฐ™์€ ๊ฒƒ๋“ค.


import sys

# Python ๋ฒ„์ „
print("Python ๋ฒ„์ „:", sys.version)
            
# ํ”Œ๋žซํผ ์ •๋ณด
print("ํ”Œ๋žซํผ:", sys.platform)
            
# int ํฌ๊ธฐ (๋ฐ”์ดํŠธ ๋‹จ์œ„)
print("int ํฌ๊ธฐ:", sys.getsizeof(0), "๋ฐ”์ดํŠธ")

5. ์„ค์น˜๋œ ๋ชจ๋“ˆ

sys.modules๋Š” ๋กœ๋“œ๋œ ๋ชจ๋“  ๋ชจ๋“ˆ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ๋”•์…”๋„ˆ๋ฆฌ์•ผ. ๋กœ๋“œ๋œ ๋ชจ๋“ˆ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป๊ฑฐ๋‚˜ ๋‹ค์‹œ ์ž„ํฌํŠธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด.


import sys

# ๋กœ๋“œ๋œ ๋ชจ๋“ˆ ๋ฆฌ์ŠคํŠธ
print("๋กœ๋“œ๋œ ๋ชจ๋“ˆ๋“ค:")
for module in sys.modules:
    print(module)
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION