글쓴이 보관물: codingnuri

파이썬에서 CSV 파일을 읽을 때 필드명을 직접 지정하기

파이썬으로 CSV 파일을 읽을 때 헤더 필드명을 직접 정의해서 사용하고 싶을 때가 있다. 이때는 다음과 같이 DictReader 객체를 생성할 때 fieldnames 인수를 직접 지정하면 된다.

with open(filename) as csvfile:
    csv_reader = csv.DictReader(csvfile, fieldnames=['제목', '저자', '페이지수'])

그리고 간혹 텍스트 파일을 읽을 때 \ufeff 문자가 붙어서 읽히는 경우가 있는데, 그럴 때는 다음과 같이 encoding 인수을 지정하는 방식으로 처리하면 된다.

with open(filename, encoding='utf-8-sig') as csvfile:
    csv_reader = csv.reader(csvfile)

\ufeff는 BOM(Bye Order Mark)인데, UTF-8 인코딩의 경우에는 BOM이 필요하지 않다고 한다. 그럼에도 간혹 파일에 포함되는 경우가 있어서 파이썬에서 encoding으로 utf-8-sig를 지정하면 해당 BOM을 무시하게 된다.

참고: python에서 \ufeff가 읽힐 때 해결방법

Google Family Link가 적용된 안드로이드 폰 교체하기

이번에 자녀가 쓰는 스마트폰을 LG 폰에서 샤오미 폰으로 교체해 줬는데, Google Family Link가 설정돼 있어서 그런지 몰라도 이전하는 데 애를 좀 먹었다. 그 과정에서 배운 몇 가지 팁.

  1. 각 스마트폰 제조사마다 제공하는 앱을 쓰는 것이 속편함

    LG 폰에 데이터를 이전해 주는 LG 모바일 스위치
    앱이 설치돼 있는데, ‘LG폰 to LG폰’ 상황에서만 쓸 수 있는 듯하다. 삼성 폰이라면 Smart Switch 앱을 쓰면 되는 것처럼 샤오미 폰으로 옮길 때는 각 폰에 Mi Mover 앱을 설치해서 옮기는 방법이 편리하다.

    안드로이드 폰은 잘 쓰지 않아서 그런지 몰라도 처음에 안드로이드 자체에 내장된 ‘기기 설정’으로 연결해서 데이터를 복사해 보려고 했는데 연결이 잘 안 되더라.

    결론적으로 각 스마트폰 제조사에서 제공하는 전용 소프트웨어를 사용하는 그나마 속편하다는 결론.

  2. Google Family Link가 적용된 상태에서 기기 개발자 옵션 켜는 법.

    샤오미 폰에 기존의 다채로운 기본 앱들이 설치돼 있어서 찜찜하기도 하고 불필요해서 삭제하려고 보니 Google Family Link 때문에 개발자 옵션을 활성화할 수가 없더라.

    그래서 찾아보니 부모의 Google Family Link 앱에서 활성화하면 된다고 해서 찾아보니 아래와 같이 활성화하는 메뉴가 있어서 활성화할 수 있었다.

    개발자 옵션을 활성화한 후에 아래 글을 참조해서 불필요한 앱을 삭제했다.

워드프레스에서 ‘private’ 상태의 글 표시하기

워드프레스에서는 글의 가시성(visibility)이 private이면 해당 글이 속한 카테고리에도 집계되지 않는 듯하다. 그런데 특정 페이지에서 가시성이 private인 글을 보여줘야 할 필요성이 있어서 이것저것 실험해 봤는데, 결국 functions.php 파일에 아래와 같은 코드를 추가해서 해결했다.

function show_private_post( $query ) {
    if (is_admin()) {
        return ;
    }    

    if ($query->is_front_page()) {
        return ;
    }    

    if (is_category('the_category'))) {
        $query->set('post_status', array('private', 'publish'));
    }    
}
add_action( 'pre_get_posts', 'show_private_post' );

첫 번째 조건을 걸지 않으면 관리자 페이지에서 ‘비공개(private)’인 글만 보고 싶을 때 전체 글이 표시되는 문제가 생기고, 두 번째 조건은 인덱스 페이지에서 비공개인 글을 표시하지 않기 위해서 추가했다. 마지막 조건에서는 글이 속한 카테고리에 따라 글의 상태를 privatepublish로 설정해서 get_posts 함수의 결과에 포함하도록 만들었다.