본문 바로가기
리눅스 관련/시스템(sys,os)lib,리눅스 lib

lib_os,sys

by 알 수 없는 사용자 2022. 5. 10.

참고

import os 관련

http://pythonstudy.xyz/python/article/507-%ED%8C%8C%EC%9D%BC%EA%B3%BC-%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC

 

import sys 관련

https://docs.python.org/ko/3/library/sys.html

 

rfind 관련( 파이썬내장lib임 )

https://hyunssssss.tistory.com/365

 


import os

import sys

path = os.path.abspath(os.path.dirname(sys.argv[0]))

sys.path.append(path[:path.rfind('/')])

치팅시트


 

현장에서 쓰는 os 정리

ex)

이런식으로

 

tree -d 

 

범주 입력 출력 설명
os.sep   '/'  
os.getenv str(os.getenv("HOME")) '/home/liam'  
os.scandir      
os.remove      
os.mkdir      
os.popen      
os.system os.system("rm -r osmk") 0 ""에 들어간 명령어 실행
os.environ.get     운영 체제에 등록되어 있는 모든 환경 변수
os.environ      
       
       
       
       
       
       
       
       

 


os.path.join(os.path.abspath(os.path.dirname(sys.argv[0]))) <- os.path.~~~ 따로 정리 

os.path.exists    
os.path.isdir    
os.path.dirname    
os.path.abspath   ​./test가 있는 곳의 절대경로(pwd)얻기

os 관련

현재 작업 폴더 얻기 os.getcwd()
# "C:\Temp"
디렉토리 변경 os.chdir("C:\Tmp")
특정 경로에 대해 절대 경로 얻기 os.path.abspath(".\\Scripts")
# "C:\Python35\Scripts"
경로 중 디렉토리명만 얻기 os.path.dirname("C:/Python35/Scripts/pip.exe")
# "C:/Python35/Scripts"
경로 중 파일명만 얻기 if os.path.isfile("C:/Python35/Scripts/pip.exe"):
   print(os.path.basename("C:/Python35/Scripts/pip.exe"))
# "pip.exe"
경로 중 디렉토리명과 파일명을 나누어 얻기 dir, file = os.path.split("C:/Python35/Scripts/pip.exe")
파일 각 경로를 나눠 리스트로 리턴하기
os.path.sep은 OS별 경로 분리자
"C:\Python35\Scripts\pip.exe".split(os.path.sep)
# ['C:', 'Python35', 'Scripts', 'pip.exe']
경로를 병합하여 새 경로 생성 os.path.join('C:\Tmp', 'a', 'b')
# "C:\Tmp\a\b"
디렉토리 안의 파일/서브디렉토리 리스트 os.listdir("C:\Python35")
파일 혹은 디렉토리 경로가 존재하는지 체크하기 os.path.exists("C:\Python35")
디렉토리 경로가 존재하는지 체크하기 os.path.isdir("C:\Python35")
파일 경로가 존재하는지 체크하기 os.path.isfile("C:\Python35\python.exe")
파일의 크기 os.path.getsize("C:\Python35\python.exe")

 


sys 관련

sys.path 실행되는 스크립트와 종속관계인 dir을 리스트 형식으로 전부 나타내줌,
따라서 sys.path[0] 은 본인스크립트가 있는 디렉터리 절대경로가 있다(pwd명령어랑 같은 결과)
   
   
   
   

 


ex) 자주쓰는 예

 

path = os.path.abspath(os.path.dirname(sys.argv[0]))

 

 

간략설명

sys.argv[0] : 현재 실행된 코드명  현재 코드가 실행된 dir path 구하기

 

os.path.abspath(os.path.dirname(sys.argv[0])) :  

os.path.dirname(sys.argv[0]) 현재 실행된 코드명이 있는 곳의 "dirname"구하기
os.path.abspath("./test") ./test가 있는 곳의 절대경로(pwd)얻기

 

os.path.abspath(os.path.dirname(sys.argv[0])) :  현재 실행된 코드의 dirname 과 dirname 의 절대경로

 

sys.path.append(path[:path.rfind('/')]) : path(str)변수에서 마지막 '/'이 있는 부분까지의 path를 'sys.path'마지막 요소에 붙임

 

sys.path[-1] <- 이거로 현재 실행된코드의 "../"위 dirname 절대경로를 출력가능함

결론 : 현재 코드가 실행된 dirname의 "../" path 구하기

 


ex) 코드  현재위치의 상위 폴더 경로 구하기

#!/usr/bin/python
# -*- coding: utf-8 -*-

###
# @file mdul_sound_manager.py
# @brief 사운드 출력
# @section

import os
import sys


print(sys.path)
print("------------------------------------------- ")
print(" ")
#----------------------------------------------------------------
# local 테스트 진행 시
# 현재위치의 상대경로를 시스템에서 인식시켜주기 위한 작업
path = os.path.abspath(os.path.dirname(sys.argv[0]))
#----------------------------------------------------------------
print("------------------------------------------- ")
print(" ")
print(path)
print(type(path))
print("------------------------------------------- ")
print(" ")
print(sys.argv[0])
print("------------------------------------------- ")
print(" ")
print(path.rfind('/'))
print(sys.path[-1])
print(sys.path.append(path[:path.rfind('/')]))
print("------------------------------------------- ")
print(" ")
print("=========sys.path append result========= ")
print(sys.path[-1])


print("------------------------------------------- ")
print(" ")
print(sys.path)

결과

 


ex) 코드  현재위치의 상위 폴더 경로 구하고 python path에 추가하기 ( __iter__() 함수를 사용해서 할 경우 )

import os,sys
path = os.path.abspath(os.path.dirname(sys.argv[0]))
path_iter = path.__iter__()
path_prev = ''

for i in range(0,path.rfind('/')):
        path_prev += ''.join(path_iter.__next__())

print(sys.path)
sys.path.append(path_prev)
print('---------------------------------------------------------')
print(sys.path)

'리눅스 관련 > 시스템(sys,os)lib,리눅스 lib' 카테고리의 다른 글

scp 정리  (0) 2022.05.27
vlc_정리  (0) 2022.05.11

댓글