Comment :
리눅스 기반의 Jupyter Lab에서 특정경로의 파일을 복사 및 붙여넣기해주는 함수
- 복사 및 붙여넣기할 파일이 DataFrame일 경우, 복사파일과 붙여넣기파일의 DataFrame shape를 비교하여 잘 붙여넣기 되었는지 체크
[!][?]pd.DataFrame.shape
를 사용하면 이미 전체를 불러오는거라 느릴까?
[!] width :len(pd.read_csv(path, nrows=1).columns)
length :len(pd.read_csv(path, usecols=['column'])
[+] copy Linux 명령어 : cp -r copy할 파일경로 paste할 파일경로
copy 경로와 paste 경로를 띄어쓰기로 구분함
import os
import pandas as pd
def copy_paste(filename,
copy_path,
paste_path,
is_df,
usecols,
sep):
"""
param filename: [str] copy해올 파일명
param copy_path: [str] copy해올 파일 경로
param paste_path: [str] paste할 경로
param is_df: [Boolean] copy할 파일이 DataFrame일 경우 True
param usecols: [list] copy 및 paste할 파일에 존재하는 column 1개(DataFrame length check용)
param sep: [str], copy해올 DataFrame의 seperator
"""
copy_file_path = os.path.join(copy_path, filename)
# 파일 존재 여부 체크
if filename in os.listdir(copy_path):
os.system('cp -r' + ' ' + copy_file_path + ' ' + paste_path)
print(f"{copy_file_path} exist")
print("copy and paste done...")
print()
# DataFrame copy -> paste check
# DataFrame이 잘 복사되었는지 DataFrame의 shape를 체크한다.
paste_file_path = os.path.join(paste_path, filename)
if is_df:
try:
copied_width = len(pd.read_csv(copy_file_path, sep=sep, nrows=1).columns)
copied_length = len(pd.read_csv(copy_file_path, sep=sep, usecols=usecols))
pasted_width = len(pd.read_csv(paste_file_path, sep=sep, nrows=1).columns)
pasted_length = len(pd.read_csv(paste_file_path, sep=sep, usecols=usecols))
# encoding이 cp949일때
except:
copied_width = len(pd.read_csv(copy_file_path, sep=sep, encoding='cp949', nrows=1).columns)
copied_length = len(pd.read_csv(copy_file_path, sep=sep, encoding='cp949', usecols=usecols))
pasted_width = len(pd.read_csv(paste_file_path, sep=sep, encoding='cp949', nrows=1).columns)
pasted_length = len(pd.read_csv(paste_file_path, sep=sep, encoding='cp949', usecols=usecols))
else:
print(f"{copy_file_path} not exist")