ctrl + f 로 찾기
subprocess : 파이썬에서 쉘 명령을 실행할 수 있게 해주는 라이브러리
단순 서브프로세스 실행을 바란다면 call 함수를 사용한다
>>> import subprocess
>>> subprocess.call(["ls", "-al"])
ls-al은 ls-a이랑 ls-l를 동시에 사용하기위한 명령어
ls -a 는 숨김파일도 보여주는 -a
ls -l은 http://www.incodom.kr/Linux/%EA%B8%B0%EB%B3%B8%EB%AA%85%EB%A0%B9%EC%96%B4/ls 참조
drwx------ 2 sbx_user1051 991 4.0K Oct 2 12:10 .
dr-xr-xr-x 21 root root 4.0K Aug 31 10:28 ..
-rw-rw-r-- 1 sbx_user1051 991 1.0M Oct 2 12:11 file
결과값을 문자열 데이터로 사용하고 싶을떄에는 check_output함수를 사용 , 결과값을 문자열데이터로 리턴해줌
>>> out = subprocess.check_output (['ls', '-al'] )
>>> out
b'total 8\ndrwxr-xr-x. 2 root root 4096 10\xec\x9b\x94 8 17:58 .\ndrwxr-xr-x. 6 root root 4096 10\xec\x9b\x94 8 17:58 ..\n'
Popen
popen 생성자 : 프로세스를 시작
communicate 메서드: 자식 프로레스들이 일을 마치고 종료하기를 기다림.
Pipe ??
-r 명령어를 실행하면 명령어가 표준출력으로 출력한 문자열을 읽기위한 용도로 pipe를 open함
w 명령어를 실행하고 키보드로 데이터를 입력해야하는 명령어에 사용함. 즉 커맨드의 표준입력으로 데이터를 전송하기위한 pipe를 open함
import asyncio
-> 비동기 프로그래밍을 위하 모듈이며 CPU작업과 I/O 를 병렬로 처리하게 해줌
****동기(Synchronout)처리는 특정 작업이 끝나면 다음 작업을 처리하는 순차처리 방식이고, 비동기처리는 여러작업을 처리하도록 예약한뒤 작업이 끝나면 결과를 받는 방식
import asyncio
async def hello(): # async def로 네이티브 코루틴을 만듦
print('Hello, world!') loop = asyncio.get_event_loop() # 이벤트 루프를 얻음
loop.run_until_complete(hello()) # hello가 끝날 때까지 기다림
loop.close() #이벤트 루트를 닫음
#추가추가
loop = asyncio.get_event_loop() # 이벤트 루프를 얻음
loop.run_until_complete(hello()) # hello가 끝날 때까지 기다림
os.urandom이라는 함수가 있다
- 이 함수는 원하는길이(byte)의 unsigned수치값을 만들어준다.
- 이것 암호화 알고리즘 키를 생성할떄 유용하다.
<파일 입출력>
f = open('hello.txt', 'w')
f.write('안녕하세요\n')
f.close()
위처럼 일일히 close하기 귀찮으면 아래처럼 써서 자동으로 닫게하면 됨
with open('hello.txt', 'w') as f:
f.write('안녕하세요\n')
open(file, 'wb', buffering=byte_size)
wb의 의미는? file대신 open을 사용한다. 파이썬 2에서만 사용된다.
- wb는 데이터를 저장하라는것 /rb는 데이터를 읽으라는뜻
- buffering = 버퍼링끄기는 0(바이너리모드에서 버퍼링 미수행), 라인모드는1(텍스트모드에서 개행문자(\n)만날때까지 버퍼링), 고정크기로 보내려면 임의의 바이트수를 1보다 큰양의 수로 입력
-errors=None 텍스트모드시 에러처리
1) read() 파일전체의 내용을 하나의 문자열로 읽어온다.
2) readline() 한라인씩 읽음 (대용량파일을 읽어올경우 굉장히유용)
3) 바이너리 파일을 1바이트씩 읽어오는 방법은?
with open("myfile", "rb") as f:
byte = f.read(1)
while byte != "":
# byte처리
byte = f.read(1)
f.flush() -> 실제 파일이 기록되지만 파일을 닫지는않는다.
f.seek(0,2) ->파일끝에서 0바이트이동(파일 끝까지이동하라는뜻)\
f.seek(i) ->파일 시작에서 i바이트로 이동
ex)f.seek(0) =첫줄로 이동하라
f.seek(-(i+1),2) -> 파일끝에서 (i+1) 바이트 이전으로
randrange -> import random이랑 같이씀 파이썬 랜덤함수중하나임
randrange(a,b) randrange(a) 두가지버전이있다.
randrange(b)는 0<=x<b 의 범위내에서 랜덤한 정수 int를 반환한다.
fsync -> 동기식 입출력함수
fd로 지정된 파일과 관련된 모든 변경자료(데이터+메타데이터)를 디스크와 동기화한다.
디스크 I/O 연산은 커널안의 버퍼캐시나 페이지 캐시를 거친다. 따라서 프로세스가 파일에 데이터를 기록하면 커널은 그 데이터를 커널의 버퍼들 주 ㅇ하나에 복사해서 내부적인 대기열에 등록해두고, 적당한 시점이 되면 디스크에 기록한다. 이렇게 대이터가 버퍼에만 있고 디스크에는 아직 기록되지않은 상태가 될 수 있다 이때 문제점은
1. 디스크에 순서대로 기록해야만하는경우 -> 커널 대기열에서는 성능개션에 적합하게 요청순서를 변경해서 문제가 발생
2. 시스템이 비정상적으로 종료될경우
이때 syn, fsync, fdatasync 함수를 이용한다.
for _ in range ():
a = [0 for _ in range(10)]
a = [0]*10
#두개가 같음
gzip
파이썬에서 압축된 파일내용을 바로 읽을 수있게 해주는 모듈
#압축하기
import gzip
path = './data/fruit.txt'
with open(path,'rb') as f_in:
with gzip.open(path+'.gz','wb') as f_out:
f_out.writelines(f_in) # ./data/fruit.txt.gz 압축 파일 생성
unittest
madplay.github.io/post/python-main-function
<리눅스 명령어>
rm-rf 삭제 리눅스 명령어
**sudo rm-rf / 포맷수준 삭제
<일치하는 string 찾기>
find , rfind 일치하는것찾기
- 일치하는것 앞에서 찾기 x.find
- 일치하는것 뒤에서 찾기 x.rfind
e.g result = json.loads(x[x.find('{'): x.find('}')+1])
'<문법> > 파이썬' 카테고리의 다른 글
[python] Saving multiple graphs as one pdf (0) | 2021.12.27 |
---|---|
Matplotlib 바그래프 문법정리 (0) | 2021.07.22 |
Pandas 열 한개 여러개로 쪼개기 (0) | 2021.01.13 |
형태소 분석 기본 연습 - 명사만 골라내기 (konlpy - Twitter) (0) | 2021.01.13 |
json 인코딩/디코딩 초간단정리 (0) | 2021.01.13 |