블로그 이미지
흰색앵초

calendar

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

Notice

2013. 3. 22. 13:25 프로그래밍/파이썬

파이썬 스크립트를 만들어서 사용하다보면 불가피하게 중복실행을 방지해야할 필요가 있다. 그럴 때는 아래와 같은 코드를 이용하면 쉽게 피할 수 있다.


import fcntl
pid_file = 'program.pid'
fp = open(pid_file, 'w')

try:
    fcntl.lockf(fp, fcntl.LOCK_EX | fcntl.LOCK_NB)
except IOError:
    # another instance is running
    sys.exit(1)

스크립트가 실행되면 program.pid에 락을 걸어서 중복실행을 막는 구조로 되어있다. 이러한 경우 파일을 처음 만들어 쓴 유저로 권한이 가기때문에 권한 문제가 생길 수 있으니 주의해야한다.


출처 : http://stackoverflow.com/questions/220525/ensuring-a-single-instance-of-an-application-in-linux


posted by 흰색앵초
2012. 12. 5. 14:11 프로그래밍/파이썬

for문을 수행할 때 for문이 돌고 있는 카운터를 알고 싶을 때가 있다.

그럴 때는 아래와 같은 방법으로 처리하면 된다.

li1 = ['a','b','c']

for idx, data in enumerate(li1):
    print idx #for문 카운터 출력
    print data 
posted by 흰색앵초
2012. 7. 13. 21:27 프로그래밍/파이썬

HTML을 파싱하다보면 개행문자가 깨지면 \n이 아닌 ^M이 될 경우가 있다 이러한 경우 VIM 등에서 확인할 수 있는데 python에서는 간단히 제거할 수 있다.

예를들어 f1라는 문자변수에 값이 저장되어있다고 치자

f1 = f1.replace('\r','')

사실 python에서 ^m의 값은 \r인 것만 알면 간단히 고칠 수 있다.

posted by 흰색앵초
2012. 6. 23. 15:42 프로그래밍/파이썬
'''
Created on 2012. 6. 23.

@author: mutsumi
'''

a = ['1','2','3','4','5','6','7','8','9','10']

b = [0,1,2,3,4]

delSu = 0

for c in range(0,len(b)): #원하는 리스트만 지우기
    del a[b[c-delSu]]
    delSu += 1
print a


파이썬 코드를 짜다보면 같은 순서의 여러개의 배열을 지워야하는 경우가 있다.
(ex:a와 b의 [0,3,5]번째의 배열을 똑같이 지워야한다거나)

그럴 경우 위의 코드와 같이 사용하면 된다.

posted by 흰색앵초
2012. 5. 4. 02:21 프로그래밍/파이썬
1. 특정 날짜로부터 며칠 지난 날짜 구하기
import datetime
day = datetime.date(2009,05,01)
afterday = day + datetime.timedelta(92)
print afterday

어제날짜: datetime.timedelta(days = -1)
내일날짜: datetime.timedelta(days = 1)

2. 오늘 날짜 구하기
datetime.date.today()



요일은 우선 두가지 방법이 있다.


import time

now = time.localtime()

print now.tm_wday #Monday is 0



import datetime

datetime.datetime

print datetime.datetime.today().weekday()


둘다 월요일은 0으로 나오고 일요일은 6으로 표현된다.


월화수목금토일로 바꾸고 싶은 경우 배열에 넣고 바꿔서 사용하면 되겠다.

posted by 흰색앵초
2012. 3. 7. 15:02 프로그래밍/파이썬
import paramiko
from paramiko import AutoAddPolicy

client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(AutoAddPolicy())
client.connect(hostname='접속주소', username='아이디', password='패스')
stdin, stdout, stderr = client.exec_command('ls -l')
print stdout.read()
client.close()

====================================================

접속해서 명령어를 실행하는 간단한 예
posted by 흰색앵초
2012. 2. 12. 04:33 프로그래밍/파이썬


def roundup(num):
    if 100000>num >=1000:
        x = float(num)/10000
        temp = round(x, 1)
        resultround = temp*10000
        return int(resultround)
    elif num >= 100:
        p = float(num)/1000
        temp = round(p, 1)
        resultround = temp*1000
        return int(resultround)
    elif num >= 10:
        p = float(num)/100
        temp = round(p, 1)
        resultround = temp*100
        return int(resultround)
    else:return num

tempnum = roundup(18)

print tempnum

소수점 반올림밖에 못찾아서 어거지로 만들었음 -_-;

posted by 흰색앵초
2011. 12. 30. 02:48 프로그래밍/파이썬

urllib.quote를 사용하다보면 작동이 안되는 막장상황이 도래하게 되는 경우가 있는데 이러할때는

type을 확인하라... str에서만 사용되기 때문에 일본어나 중국어 등이 섞인 글자들의 type이 종종 unicode로 되있는 경우가 있다.

이는 enocde("utf-8")옵션 등을 사용하여 사용하면 문제가 해결됨
posted by 흰색앵초
prev 1 next