2016-10-26 6 views
0

for 루프 내에서 pep8과 호환되도록 줄을 들여 쓰려면 어떻게해야합니까?pep8 호환성을 위해이 줄을 들여 쓰는 방법

for ii in range(len(file_time)): 
    file_time[ii] = datetime.strptime(str(file_date[ii]) + " " + str(file_time[ii]),'%Y/%m/%d %H:%M:%S.%f').replace(microsecond=0) 

나는 pep8 문서가 제공하는 옵션이 시도했다 :

# Aligned with opening delimiter. 
foo = long_function_name(var_one, var_two, 
         var_three, var_four) 

# Hanging indents should add a level. 
foo = long_function_name(
    var_one, var_two, 
    var_three, var_four) 

하지만 난 여전히 같은 오류 얻을 :

script.py:36:9:E122 continuation line missing indentation or outdented 
+1

* 작동하지 않는다는 것을 의미합니까? 교수형 들여 쓰기는 여기에서 사용합니다. –

+0

flake8과 같은 도구를 사용하여 확인하고 있습니까? –

+0

내 말은 여전히 ​​들여 쓰기 오류가 있다는 것입니다. – paulzaba

답변

3

거는 들여 쓰기가 잘 작동합니다을 :

for ii in range(len(file_time)): 
    file_time[ii] = datetime.strptime(
     str(file_date[ii]) + " " + str(file_time[ii]), 
     '%Y/%m/%d %H:%M:%S.%f').replace(microsecond=0) 

def as_dt(datestr, timestr, fmt='%Y/%m/%d %H:%M:%S.%f'): 
    dt = datetime.strptime('{} {}'.format(fd, ft), fmt) 
    return dt.replace(microsecond=0) 

file_time = [as_dt(fd, ft) for fd, ft in zip(file_date, file_time)] 
+0

감사합니다! 그것은 당신이 말한대로 일했습니다 – paulzaba

2
: 당신은 너무 함수로 변환을 추출 할 수 있습니다

file_time = [ 
    datetime.strptime('{} {}'.format(fd, ft) 
         '%Y/%m/%d %H:%M:%S.%f').replace(microsecond=0) 
    for fd, ft in zip(file_date, file_time)] 

: OU는 (이미 확실히, 문자열이) str() 변환을 사용 방지 및 zip() 및 지능형리스트를 사용하여이를 개선 할 수 있습니다

어쩌면 대답은 그 중 하나가 아니기 때문일 것입니다. 단지 그것이 허용되기 때문에 그것이 최선의 방법이라는 것을 의미하지는 않습니다. pep8의 목적은 유지 보수성과 가독성을 개선하는 것입니다. pep8을 준수하도록하려면 더 읽기 쉬울뿐만 아니라 여러 줄로 구분해야합니다. 이유

TIME_FORMAT = "%Y/%m/%d %H:%M:%S.%f" 

for ii in range(len(file_time)): 
    date_time = "{} {}".format(file_date[ii], file_time[ii]) 
    file_time[ii] = datetime.strptime(date_time, TIME_FORMAT) 
    file_time[ii] = file_time[ii].replace(microsecond=0) 

하나는 pep8의 열 한계를 읽기 섹션으로 떨어져 코드를 분할하는 것이 좋습니다 것입니다있다. 코드를 가능한 한 쉽게 읽을 수있게하려면 코드를 한 행에 하나의 액션으로 유지하십시오.

+0

감사합니다! 나는 여전히 "테스트 코드"를 수행하고 있지만 여러분의 방법이 너무 효과적이므로 최종 스크립트에서 사용하게 될 것입니다. – paulzaba

0

파이썬에서 일반적인 규칙은 그들이 괄호로 둘러싸인 경우 표현은,이 ...

for ii in range(10): 
    foo = 1+ 
      2+ 
      3 

작업 ... 구문 에러를 발생 이유입니다,이 동안

을 줄 바꿈을 포함 할 수 있다는 것입니다. ..

for ii in range(10): 
    foo = (1+ 
      2+ 
      3) 

...하지 않습니다.

또한 들여 쓰기 오류를 언급 했으므로 일관되게 탭 또는 공백을 사용하여 ID를 확인하고 있는지 확인하십시오.

+0

'E122'는 구문 오류 또는 들여 쓰기 오류가 아닙니다. * linting * 오류입니다. * 스타일 가이드 *는 침해를위한 탭과 공백을 혼합하는 구문 규칙이 아니라 침해되었습니다. –

+0

코드를 직접 사용해보십시오. 첫 번째 예제는 파이썬 2.7.9와 파이썬 3.4.2 모두에서 "SyntaxError : invalid syntax"예외를 생성하지만 다른 하나는 그렇지 않습니다. 또한 linting error// 잘못된 구문이기 때문에 발생합니다. – iCart

+0

질문에있는 코드에 대해 이야기하고 있습니다.이 질문은 구문 오류로 실행되지 않습니다. OP는 라인을 가로 질러 그 표현을 깨뜨리는 시도를 공유하지는 않았지만 그들은 린터 오류를 공유했다 :'script.py:36:9:E122 continuation line missing indentation or outdented'. –