티스토리 뷰
INTRO
Text, .txt file 다루기
- iterm.app or terminal.app : file handling
- python file handling
File Handling : Create, Open/Close, Append, Read, Write
용어
Text File(텍스트 파일, .txt)
사람이 인지할 수 있는 문자열 집합으로부터 문자열로만 이루어진다.
잘 알려진 문자열 집합으로는 ASCII 문자열 집합과 유니코드 문자열 집합이 있다.
출처 : ko.wikipedia.org/wiki/텍스트_파일
ASCII
미국정보교환표준부호(American Standard Code for Information Interchange)
줄여서 ASCII( /ˈæski/, 아스키)는 영문 알파벳을 사용하는 대표적인 문자 인코딩
컴퓨터와 통신 장비를 비롯한 문자를 사용하는 많은 장치에서 사용되며, 대부분의 문자 인코딩이 아스키에 기초를 두고 있다.
출처 : ko.wikipedia.org/wiki/ASCII
유니코드(Unicode)
유니코드(Unicode)는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준이며, 유니코드 협회(Unicode Consortium)가 제정한다.
또한 유니코드의 목적은 현존하는 문자 인코딩 방법들을 모두 유니코드로 교체하려는 것이다. 기존의 인코딩들은 그 규모나 범위 면에서 한정되어 있고, 다국어 환경에서는 서로 호환되지 않는 문제점이 있었다.
유니코드가 다양한 문자 집합들을 통합하는 데 성공하면서 유니코드는 컴퓨터 소프트웨어의 국제화와 지역화에 널리 사용되게 되었으며, 비교적 최근의 기술인 XML, 자바, 그리고 최신 운영 체제 등에서도 지원하고 있다.
출처 : ko.wikipedia.org/wiki/유니코드
UTF-8 : python3에서 주석으로 한글 인코딩 --> # -*- coding: utf-8 -*-
UTF-8은 유니코드를 위한 가변 길이 문자 인코딩 방식 중 하나로, 켄 톰프슨과 롭 파이크가 만들었다. UTF-8은 Universal Coded Character Set + Transformation Format – 8-bit 의 약자이다. 본래는 FSS-UTF(File System Safe UCS/Unicode Transformation Format)라는 이름으로 제안되었다.
UTF-8 인코딩은 유니코드 한 문자를 나타내기 위해 1바이트에서 4바이트까지를 사용한다.
출처 : ko.wikipedia.org/wiki/UTF-8
1. terminal command line : file handling
iterm2 + oh my zsh 환경에 따라 다르지만 "~"은 macOS home dir
clear : terminal 화면 청소
pwd : Print Working Directory, 현재 dir 경로
cd : Change Directory, 사용법 --> 절대경로 이동 cd ./dir_name/dir_name, 상위폴도 이동 cd ..
ls : list, 권한/소유권/파일크기/생성일/dir_name or file_name
mkdir : Make Directory, dir 생성, 사용법 --> mk dir_name
rmdir : Remove Directory, dir 제거, rmdir dir_name
touch : create file/modify date..., 사용법 --> touch file_name
rm : Remove, file 제거, rm file_name
cat : Concatenate, file 읽기, 사용법 --> cat file_name
cp : Copy, 복사하기, 사용법 --> cp file_name path
mv : Move, 이동하기, 사용법 --> mv file_name path
nano : text editor, vi editor 사용이 편리, 사용법 --> nano file_name --> 편집 --> ctrl+o & enter 저장 --> ctrl+x 나오기
ex1> clear, pwd, cd, ls -al, ls -a, ls -l, ls
➜ ~ clear
➜ ~
➜ ~ pwd
/Users/[YourID]
➜ ~ cd ./pyTest
➜ pyTest ls -al
total 136
drwxr-xr-x 17 [YourID] staff 544 3 3 15:20 .
drwxrwxrwx@ 25 [YourID] staff 800 3 3 15:20 ..
-rw-r--r--@ 1 [YourID] staff 6148 3 3 15:17 .DS_Store
-rw-r--r-- 1 [YourID] staff 638 3 3 11:22 example_import.py
drwxr-xr-x 4 [YourID] staff 128 3 2 14:04 myClass
drwxr-xr-x 4 [YourID] staff 128 3 2 16:15 myfun
-rw-r--r--@ 1 [YourID] staff 285 2 22 17:10 test0.py
-rwxrw-rw- 1 [YourID] staff 310 2 22 17:54 test1.py
-rw-r--r-- 1 [YourID] staff 619 3 2 17:20 test10.py
-rw-r--r-- 1 [YourID] staff 1787 2 24 13:50 test2.py
-rw-r--r-- 1 [YourID] staff 3229 2 25 11:11 test3.py
-rw-r--r-- 1 [YourID] staff 4254 2 25 12:30 test4.py
-rw-r--r-- 1 [YourID] staff 3820 2 25 15:25 test5.py
-rw-r--r-- 1 [YourID] staff 3737 2 25 16:31 test6.py
-rw-r--r-- 1 [YourID] staff 4585 2 26 14:48 test7.py
-rw-r--r-- 1 [YourID] staff 4729 2 27 14:55 test8.py
-rw-r--r-- 1 [YourID] staff 823 3 2 08:46 test9.py
➜ pyTest ls -a
. myfun test3.py test8.py
.. test0.py test4.py test9.py
.DS_Store test1.py test5.py
example_import.py test10.py test6.py
myClass test2.py test7.py
➜ pyTest ls -l
total 120
-rw-r--r-- 1 [YourID] staff 638 3 3 11:22 example_import.py
drwxr-xr-x 4 [YourID] staff 128 3 2 14:04 myClass
drwxr-xr-x 4 [YourID] staff 128 3 2 16:15 myfun
-rw-r--r--@ 1 [YourID] staff 285 2 22 17:10 test0.py
-rwxrw-rw- 1 [YourID] staff 310 2 22 17:54 test1.py
-rw-r--r-- 1 [YourID] staff 619 3 2 17:20 test10.py
-rw-r--r-- 1 [YourID] staff 1787 2 24 13:50 test2.py
-rw-r--r-- 1 [YourID] staff 3229 2 25 11:11 test3.py
-rw-r--r-- 1 [YourID] staff 4254 2 25 12:30 test4.py
-rw-r--r-- 1 [YourID] staff 3820 2 25 15:25 test5.py
-rw-r--r-- 1 [YourID] staff 3737 2 25 16:31 test6.py
-rw-r--r-- 1 [YourID] staff 4585 2 26 14:48 test7.py
-rw-r--r-- 1 [YourID] staff 4729 2 27 14:55 test8.py
-rw-r--r-- 1 [YourID] staff 823 3 2 08:46 test9.py
➜ pyTest ls
example_import.py test1.py test4.py test8.py
myClass test10.py test5.py test9.py
myfun test2.py test6.py
test0.py test3.py test7.py
ex2> lecture_basic_1to5 directory 생성 후 test0.py~test10.py와 example_import.py 이동
macOS에서 네트워크 상 파일 이동시 .DS_Store 파일이 생성된다고 한다. 제거해보자. 추가내용 참고 : (macOS) .DS_Store 삭제
➜ pyTest mkdir lecture_basic_1to5
➜ pyTest mv *.py ./lecture_basic_1to5
➜ pyTest ls ./lecture_basic_1to5 # 이동된 dir 확인
example_import.py test10.py test4.py test7.py
test0.py test2.py test5.py test8.py
test1.py test3.py test6.py test9.py
➜ pyTest ls # 현재 dir 확인
lecture_basic_1to5 myClass myfun
➜ pyTest ls -a
. .DS_Store myClass
.. lecture_basic_1to5 myfun
➜ pyTest rm .DS_Store # .DS_Store 제거
➜ pyTest ls -a # 제거 후 확인
. lecture_basic_1to5 myfun
.. myClass
ex2> py_intro.txt 파일 생성 후 nono editor에 내용(본문참고 : INTRO., 아래 파일 첨부)을 복사 후 붙여 넣고 cat 명령어로 읽기
➜ pyTest touch py_intro.txt
➜ pyTest ls
lecture_basic_1to5 myClass myfun py_intro.txt
➜ pyTest nano py_intro.txt # 아래 캡쳐 화면 참고
➜ pyTest cat py_intro.txt
python(파이썬)
1991년 프로그래머인 귀도 반 로섬이 발표한 고급 프로그래밍 언어로, 플랫폼에 독립적이며 인터프리터식, 객체지향적, 동적 타이핑(dynamically typed) 대화형 언어
...(중략)
파이썬으로 할 수 없는 일
시스템과 밀접한 프로그래밍 영역
모바일 프로그래밍
출처 : 위키독, wikidocs.net/7
➜ pyTest
2. python : file handling
python에서 경로는 cwd(current work directory) 기준 상대경로(./)를 이용한다.
cwd에서 base_path, sub_dirs, files를 얻고 새로운 디렉토리와 파일을 생성해보자.
file은 open/close를 이용하지만 with를 이용하면 close없이 간결하게 사용할 수 있다.
.txt file을 생성하고, 위의 "py_intro.txt" 파일을 열어 내용을 읽고 생성된 파일에 쓰는 방법을 알아본다.
python code : pyTest/test11.py
# -*- coding: utf-8 -*-
import os
#### directory : path, make dir, make txt
print("현재 경로만 얻기 : os.getcwd\n{}\n".format(os.getcwd()))
print("현재 경로 files와 sub_dirs 얻기 : os.listdir\n{}\n".format(os.listdir(os.getcwd())))
print("현재 경로, 하위 디렉토리명, 파일명 : os.walk")
base_path, sub_dirs, fnames = next(os.walk(os.getcwd()))
print("1.base_path\n{}\n2.sub_dirs\n{}\n3.files\n{}\n".format(base_path, sub_dirs, fnames))
new_sub_dir = 'lecture_basic_6to10'
new_file = 'py_intro_cp.txt'
print("Make Path : sub_dir in cwd(current working directory)")
sub_dpath = os.path.join(base_path,new_sub_dir)
new_fpath = os.path.join(base_path,new_file)
print("Path of new_sub_dir : {}".format(sub_dpath))
print("Path of new_file : {}".format(new_fpath))
print("Before confirm making sub_dir/file : {}".format(os.listdir(os.getcwd())))
if not os.path.isdir(sub_dpath):
os.makedirs(sub_dpath)
if not os.path.isfile(new_fpath):
f = open(new_file,'w')
f.close()
print("After confirm making sub_dir/file : {}".format(os.listdir(os.getcwd())))
#### directory : txt open/close using with, txt read/write
with open("py_intro.txt",'r') as f1:
text_read = f1.read()
with open(new_file,'a') as f2:
f2.write(text_read)
## 생성된 py_intro_cp.txt 파일을 열어 내용을 확인
---- SublimeText python Run test11.py ----
현재 경로만 얻기 : os.getcwd
~/pyTest
현재 경로 files와 sub_dirs 얻기 : os.listdir
['py_intro.txt', 'lecture_basic_1to5', 'myClass', 'myfun', 'test11.py']
현재 경로, 하위 디렉토리명, 파일명 : os.walk
1.base_path
~/py_design_tool/pyTest
2.sub_dirs
['lecture_basic_1to5', 'myClass', 'myfun']
3.files
['py_intro.txt', 'test12.py', 'test11.py']
Make Path : sub_dir in cwd(current working directory)
Path of new_sub_dir : ~/pyTest/lecture_basic_6to10
Path of new_file : ~/pyTest/py_intro_cp.txt
Before confirm making sub_dir/file : ['py_intro.txt', 'lecture_basic_1to5', 'myClass', 'myfun', 'test11.py', 'py_intro_cp.txt', 'lecture_basic_6to10']
After confirm making sub_dir/file : ['py_intro.txt', 'lecture_basic_1to5', 'myClass', 'myfun', 'test11.py', 'py_intro_cp.txt', 'lecture_basic_6to10']
***Repl Closed***
python code : pyTest/ref11.py
아스키코드와 진법 변환/역변환
dir(), locals(), vars()는 python 구동에 사용되는 object 내용 및 경로 확인에 활용
# -*- coding: utf-8 -*-
import os
#### ASCII, 진법
print("문자 --> ASCII : chr(65) = {}".format(chr(65)))
print("ASCII --> 문자 : ord('A') = {}\n".format(ord('A')))
print("10진수 --> 2진수 : bin(3) = {}".format(bin(3)))
print("10진수 --> 2진수 : bin(-3) = {}".format(bin(-3)))
print(" 2진수 --> 10진수 : int('0b11',2) = {}".format(int('0b11',2)))
#### dir, locals 활용
print('\n\n')
print("dir() : {}\n".format(dir()))
print("dir(os) : {}\n".format(dir(os)))
## locals() 딕셔너리는 읽기에만 유용
print("locals() : {}\n".format(locals()))
print("locals()['os'] : {}\n".format(locals()['os']))
## vars()는 인자가 없으면 locals() 처럼 동작 : 아래 주석 풀어서 확인
# print("vars() {}\n".format(vars()))
# print("vars(os) {}\n".format(vars(os)))
---- SublimeText python Run ref11.py : dir(os)는 os module이 사용할 수 있는 mothod를 보여준다. 너무 길어서 중략----
문자 --> ASCII : chr(65) = A
ASCII --> 문자 : ord('A') = 65
10진수 --> 2진수 : bin(3) = 0b11
10진수 --> 2진수 : bin(-3) = -0b11
2진수 --> 10진수 : int('0b11',2) = 3
dir() : ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'os']
dir(os) : ['CLD_CONTINUED', ...
'__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', ...
'close', 'closerange', ...
'getcwd', 'getcwdb', 'getegid', 'getenv', 'getenvb', 'geteuid', 'getgid', ...
'makedirs', 'minor', 'mkdir', 'mkfifo', 'mknod', 'name', 'nice', 'open', ...
'read', 'readlink', 'readv', 'register_at_fork', 'remove', ...
'sys', 'sysconf', 'terminal_size', 'times', ... ]
locals() : {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x108ee5ca0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': '/Users/jiwonlee/py_design_tool/pyTest/ref11.py', '__cached__': None, 'os': <module 'os' from '/usr/local/Cellar/python@3.9/3.9.1_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/os.py'>}
locals()['os'] : <module 'os' from '/usr/local/Cellar/python@3.9/3.9.1_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/os.py'>
***Repl Closed***
'python > Lecture' 카테고리의 다른 글
python 기초 #8 : Database - SQLite (0) | 2021.03.03 |
---|---|
python 기초 #7 : File Handling - csv, excel(xlsx) (0) | 2021.03.03 |
python 기초 #5 : function(함수)/method(메서드)/module(모듈) (0) | 2021.02.26 |
python 기초 #4 : Code Block(제어문 : 조건문/반복문) (0) | 2021.02.25 |
python 기초 #3 : Data-type Handling(자료형 다루기) (0) | 2021.02.24 |
- Total
- Today
- Yesterday
- Raspberry Pi
- Django
- analysis
- server
- DS18B20
- git
- ERP
- Model
- r
- Regression
- sublime text
- Pandas
- 자가격리
- vscode
- Templates
- MacOS
- 코로나
- 코로나19
- 라즈베리파이
- 확진
- CSV
- raspberrypi
- SSH
- Python
- DAQ
- pyserial
- COVID-19
- arduino
- template
- github
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |