Python 사용시 다차원 배열 또는 튜플을 많이 사용 하곤 합니다.

이렇게 다차원으로 구성된 배열의 일부 Column 만을 뽑아 내고 싶은 경우가 종종 있습니다. 

이런 경우에는 zip() 함수를 사용하면 편리 합니다 .

아래 코드는 그 예제이며 tuple 이나 list 에서 똑같이 동작 합니다. 

print "-"*30 + "Tuple" + "-"*30

Multidimensional_tuple=((1,2,3),(4,5,6),(7,8,9))
print Multidimensional_tuple

Col1, Col2, Col3 = zip(*Multidimensional_tuple)

print Col1
print Col2
print Col3

# -------------------------

print "-"*30 + "Array" + "-"*30
Multidimensional_array=[[1,2,3],[4,5,6],[7,8,9]]
print Multidimensional_array

Col1, Col2, Col3 = zip(*Multidimensional_array)

print Col1
print Col2
print Col3

 위 코드에 따른 결과는 아래와 같습니다. 


각각의 모든 column 이 아니라 특정 column 만 추출하고 싶다면 다음과 같이 안 쓰는 부분들을 _(underscore) 로 처리 하면 됩니다. 

아래 예는 2 번째 column 만 추출 하는 경우의 코드 입니다.

_, Col2, _ = zip(*Multidimensional_array)


MATLAB 을 사용하여 압축을 하고 싶으면 zip() 이라는 함수를 사용 합니다.

 

현재 폴더의 하위 내용들을 압축하고 싶은 경우 보통은 현재 폴더를 압축하곤 하는데 이렇게 하려면 현재 폴더가 아닌곳에 zip 파일을 저장해야 합니다.

 

오늘은 현재 폴더 하위의 내용들을 압축하는 방법에 대해 소개하려 합니다.

 

현재 폴더의 내용을 검색하는 방법은 dir() 이라는 함수를 사용합니다. dir() 함수는 recursive 한 파일 검색은 되지 않습니다.

 

recursive 한 파일 검색을 하고 싶다면 아래 포스팅을 참조하시면 됩니다.

 

http://iamaman.tistory.com/757

 

아무튼 오늘은 그냥 현재 폴더에 대해서만 검색 할것이므로 dir() 함수를 사용합니다.

 

그런데 dir() 함수를 사용하여 현재 폴더를 검색하면 '.', '..' 라는 폴더가 검색 됩니다.

 

바로 현재와 상위 폴더 입니다.

 

현재 폴더의 하위 내용들을 압축하고 싶기 때문에 그래서 이 부분들을 제외하고 압축을 해야 합니다.

 

위 소개한 부분들을 제외하고 압축을 하는 방법은 아래 코드와 같습니다.

 

a= dir('.');

fileAll=cell(length(a),1);

 

for n=1:length(a)

    if ~(strcmp(a(n).name,'.') || strcmp(a(n).name,'..'))

        fileAll{n}=a(n).name;

    end

end

 

AllFile=fileAll(~cellfun('isempty',fileAll));

zip('CurrentFolder.zip',AllFile);

 


오늘은 MATLAB을 사용하여 파일을 압축하는 방법에 대해 소개하려 합니다.

 

MATLAB 에서 파일을 압축하기 위해서는 다양한 함수가 있는데~

 

zip, unzip, gzip , gunzip, tar, untar 등과 같은 함수가 있습니다.

 

압축방법은 아래 매뉴얼에 나와 있는 바와 같이~

 

http://kr.mathworks.com/help/matlab/ref/zip.html

 

zip 파일명을 넣고 뒤에 압축하고자 하는 파일 명들을 셀 타입으로 넣으면 됩니다.

 

zip('backup.zip',{'*.m','*.mat'});

OR

zip('backup.zip',{'abc.m','aaa.mat'});

 

그런데 파일이 현재 폴더에 있다면 위와 같은 방식으로 하면 되는데~

 

저 같은 경우에는 파일이 여러 군데로 분산되어 있는 경우가 많이 있습니다.

 

이런 경우에는 사용하는 파일을 하나 하나 찾아서 압축파일에 추가하려면 매우 불편하고 실수 할 수도 있는 일이죠~

 

이런 경우에는 아래 소개했던 MATLAB Dependency Report 를 사용하는 게 좋습니다.

 

http://iamaman.tistory.com/255

 

위 포스팅에서는 MATLAB Dependency Report 라는 새로운 창을 통해 확인 하는 거지만~

 

depfun('filename') 이라는 함수를 사용하면 filename 에서 사용하는 함수들의 Dependency 를 다 찾아 줍니다.

 

그런데 최신 매뉴얼을 확인 하니 아래 주소에서 matlab.codetools.requiredFilesAndProducts() 를 사용하라고 하더군요.

 

http://kr.mathworks.com/help/matlab/matlab_prog/identify-dependencies.html#f7-58063

 

그럼 이제 matlab.codetools.requiredFilesAndProducts() 를 사용해서 Dependency 를 찾으면 되는거고~

 

Zip() 함수를 사용해서 압축을 하면 되겠네요~ 현재 제가 샘플로 사용할 convTest_20151018.m 파일을 통해 한번 실습 해보죠~

 

위 포스팅에서 소개했던 MATLAB Dependency Report (종속성 리포트)를 확인 해보니 convTest_20151018.m 파일은 conv_m.m 파일을 사용 중에 있습니다.

 

 

convTest_20151018.m 파일에 대해 정상적으로 압축하는 명령은 다음과 같습니다.

 

[fList, pList] = matlab.codetools.requiredFilesAndProducts('convTest_20151018.m');

zip('test.zip',fList)

 

matlab.codetools.requiredFilesAndProducts() 함수를 통해 convTest_20151018.m 파일에서 사용하는 모든 파일들이 fList 라는 셀 타입에 저장 되고~

 

이를 zip() 함수를 통해 압축하는 겁니다.

 

test.zip 파일을 확인 해보면~

 

convTest_20151018.m, conv_m.m 파일을 들어 있는 것을 확인 할 수 있습니다.


저는 주로 Autohotkey 코딩을 할 때 에디터로 아래 포스팅에서 소개했던 SciTE4Autohotkey 를 주로 사용하곤 하는데요~



2012/02/22 - [programming language/Autohotkey] - Autohotkey를 사용해 보아요~


 

외국에서 Autohotkey 에 대해 소개하는 포스팅들을 보다 보니 Autohotkey 에디터로 Notepad++ 도 많이들 사용하더군요.

 

물론 Notepad++를 Autohotkey 에디터로 사용하기 위해서는 Syntax-Highlighting, Auto-Completion, Plugins 등을 세팅 해 주는데요~

 

이렇게 셋팅하는 방법이나 다운로드 해야 되는 파일 등은 아래 주소에서 확인 할 수 있습니다.


 

http://ahkscript.org/boards/viewtopic.php?f=7&t=50

 

기존의 Notepad++ 세팅이 많이 되어 있다면 Autohotkey 세팅을 위해 추가로 Syntax-Highlighting, Auto-Completion, Plugins 등을 세팅 해 줘야겠지만 Syntax-Highlighting, Auto-Completion, Plugins 들이 세팅이 되어 있는 Notepad++ 파일도 준비해 놨더군요.

 

위 주소에서 좀 밑에 보시면~ 아래 그림과 같은 다운로드 화면이 있습니다. Autohotkey 를 위한 Syntax-Highlighting, Auto-Completion, Plugins 뿐만 아니라 추가로 AutoSave, RunMe, TextFX 와 같은 Plugins도 같이 들어 있더군요.

 

7z 이나 zip 중에서 아무거나 편하신 거 하나 다운로드 받으면 됩니다.

 

압축을 풀고 notepad++.exe 파일을 실행해서 Autohotkey 를 코딩 해 보면~ 아래 그림과 같이 Auto-Completion 가 되는 것을 볼 수 있습니다.


  1. Noblesse 2014.04.29 21:10

    좋은 정보 감사합니다 ^^

    • 남성 2014.04.30 11:40 신고

      방문해 주셔서 감사합니다. ^^ 도움 되셨다니 다행이네욧~ 자주 방문해 주세요~

압축 유틸로 우리나라에서는 아직도 알집을 많이 이용하시는 것 같은데요~

 

알집은 개인한테나 무료지 기업에는 무료가 아닙니다~ 즉! 다 돈 주고 사야 되는 프로그램이라는 것이죠.

 

찾아보면 아래 포스팅에서 설명 드린 압축시대와 같이 굉장히 좋은 공짜 압축 유틸이 많이 있습니다.

 

공짜 압축 프로그램, 압축시대
 




오늘은 그 중에서도 요즘 많이들 사용하시는 압축 유틸인 7-Zip 에 대해 소개해 드리려 합니다.

 

 

제가 7-Zip 을 사용하는 이유는 공짜라는 것 만이 아니라 command line version 의 유틸이 필요 했기 때문입니다.

 

컴퓨터를 편리하게 이용하려면 특정 시점이 되면 알아서 자동으로 뭔가가 되기를 바라기 마련인데 ~~

 

특정 폴더의 압축이나 압축 해제를 자동으로 할 필요가 있을 때 이런 command line version 의 압축 유틸이 필요 합니다.

 

7-Zip의 공식 홈페이지는 아래 주소와 같습니다.

 

http://www.7-zip.org/

 

위 페이지에서 license란을 보시면 GNU LPGL 라이선스며 기업에서도 제약 없이 사용될 수 있다고 써 있군요.

 

운영 체제는 윈도우리눅스/유닉스를 지원 하고 위 페이지에서 어떤 포맷에 대해 지원을 하나 확인 하실 수 있습니다.

 

다운로드는 아래 페이지에서 받고요~ 각자 운영체제에 맞는 버전을 다운로드 하여 설치하시면 되겠습니다.

 

http://www.7-zip.org/download.html

 

command line version 을 이용하시려면 7z.exe 나 7za.exe (a=alone) 파일을 이용하게 되는데 7z.exe 파일은 7z.dll 파일을 이용한다 합니다.

 

7z.exe 를 이용하여 압축 또는 해제를 하실 때는 7z.dll 도 같은 폴더 또는 path 에 있어야 합니다.

 

다라서 7z.exe 와 7z.dll 이 있는 폴더를 path 환경변수에 추가한 후 이용하시는 것이 편리합니다.

 

7za.exe 은 standard alone 버전이며 7z.exe 를 이용하는 것에 비해 적은 파일 포맷을 지원 합니다.

 

도움말을 보면 7za.exe 는 7z, lzma, cab, zip, gzip, bzip2, Z, tar 포맷만 지원을 하는군요.

 

7za.exe 파일은 위 다운로드 페이지에서 7-Zip Command Line Version 을 다운로드 하시면 됩니다.

 




command line version을 이용한 압축해제 명령어는 간단합니다.

 

7z a archive1.zip subdir\ 하시면 subdir 폴더와 이하의 모든 파일 및 폴더가 achieve1.zip 파일로 압축이 되고

 

7z x archive.zip 하면 현재 폴더에 압축을 풀고

 

압축을 해제할 특정 폴더를 정하려면 –o 옵션을 줘서

 

7z x archive.zip –oc:\abc 하면 c:\abc 폴더에 압축 해제가 됩니다.

 

-o 옵션 이외에도 다양한 옵션들이 있으니 도움말을 참조 해 보시기 바랍니다.


'컴퓨터일반' 카테고리의 다른 글

C99 header complex.h  (0) 2012.02.15
ACER 노트북 XP 설치 시 BIOS 세팅  (0) 2012.01.30
Linux 설치 USB 만들기, UNetbootin  (0) 2012.01.29
ScanDisk Cruzer Blade 16GB USB  (0) 2012.01.28
괜찮은 압출 유틸 7-Zip  (0) 2012.01.27
qBittorrent  (0) 2012.01.25
centos 다운로드  (0) 2012.01.18
Google Documents  (0) 2012.01.16
윈도우 시작 종료음 제거  (0) 2012.01.14

+ Recent posts