copy_paste

olxtar·2023년 2월 12일
0

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")
profile
예술과 기술

0개의 댓글