2016-05-06 2 views
0

Я запускаю скрипт python на моем малине pi, и мне просто интересно, есть ли какая-либо команда, которую я могу использовать, которая подсчитывает, сколько строк в моем скрипте.python script - подсчет строк кода в скрипте

С уважением

+0

Изнутри сценария? –

+0

Какой редактор вы используете? Большинство редакторов имеют функцию отображения номеров строк, но часто она не включена по умолчанию. – cdarke

+0

Это доступ к оболочке на пи, и я редактирую его с помощью nano .. wc -l команда работала для меня :) –

ответ

3

Вы можете использовать wc:

wc -l yourScript.py

0

Вы можете get the path of the script being run, а затем прочитать файл, считая все строки, которые не являются ни пустым, ни начать с # символа или любой ''' или """ (все из которых обозначают комментарии):

#!/usr/bin/env python3 

''' 
This script prints out all significant lines of code contained within 
itself. 
''' 

import os 
import re 

SINGLE_LINE_COMMENT_DELIMITER = "#" 
MULTILINE_COMMENT_DELIMITER_PATTERN = re.compile("['\"]{3}") 

class SignficantLineParser(object): 
def __init__(self): 
    self.in_comment_section = False 

def parse(self, line): 
    line = line.strip() 
    if self.in_comment_section: 
     if line.startswith(SINGLE_LINE_COMMENT_DELIMITER): 
      return False 
     else: 
      if MULTILINE_COMMENT_DELIMITER_PATTERN.match(line): 
       # Exiting multi-line comment 
       self.in_comment_section = False    
    elif line: 
     if line.startswith(SINGLE_LINE_COMMENT_DELIMITER): 
      return False 
     else: 
      if MULTILINE_COMMENT_DELIMITER_PATTERN.match(line): 
       # Entering multi-line comment 
       self.in_comment_section = True 
       return False 
      else: 
       return True 
    else: 
     return False 


script_path = os.path.realpath(__file__) 
with open(script_path, 'r') as inf: 
    parser = SignficantLineParser() 
    significant_lines = 0 
    for line in inf: 
     if parser.parse(line): 
      significant_lines += 1 
      print("Significant line: " + line, end="") 

print("\n\nSignificant line count: %d" % significant_lines) 

Это печатает:

Significant line: import os 
Significant line: import re 
Significant line: SINGLE_LINE_COMMENT_DELIMITER = "#" 
Significant line: MULTILINE_COMMENT_DELIMITER_PATTERN = re.compile("['\"]{3}") 
Significant line: class SignficantLineParser(object): 
Significant line: def __init__(self): 
Significant line:  self.in_comment_section = False 
Significant line: def parse(self, line): 
Significant line:  line = line.strip() 
Significant line:  if self.in_comment_section: 
Significant line:   if line.startswith(SINGLE_LINE_COMMENT_DELIMITER): 
Significant line:    return False 
Significant line:   else: 
Significant line:    if MULTILINE_COMMENT_DELIMITER_PATTERN.match(line): 
Significant line:     self.in_comment_section = False    
Significant line:  elif line: 
Significant line:   if line.startswith(SINGLE_LINE_COMMENT_DELIMITER): 
Significant line:    return False 
Significant line:   else: 
Significant line:    if MULTILINE_COMMENT_DELIMITER_PATTERN.match(line): 
Significant line:     self.in_comment_section = True 
Significant line:     return False 
Significant line:    else: 
Significant line:     return True 
Significant line:  else: 
Significant line:   return False 
Significant line: script_path = os.path.realpath(__file__) 
Significant line: with open(script_path, 'r') as inf: 
Significant line: parser = SignficantLineParser() 
Significant line: significant_lines = 0 
Significant line: for line in inf: 
Significant line:   if parser.parse(line): 
Significant line:    significant_lines += 1 
Significant line:    print("Significant line: " + line, end="") 
Significant line: print("\n\nSignificant line count: %d" % significant_lines) 

Significant line count: 35 
+0

oh! благодаря вам .. Хотя то, что я хотел, было проще; только одна командная строка. Однако я должен признать, что это дает мне идею, которая поддерживает мой скрипт .. Спасибо вам :) –

Смежные вопросы