2016-05-06 10 views
0

Ich habe ein Python-Skript auf meinem Raspberry Pi ausgeführt und ich habe mich nur gefragt, ob es einen Befehl gibt, der zählt, wie viele Zeilen in meinem Skript enthalten sind.Python-Skript - Zählen von Codezeilen im Skript

Grüße

+0

Aus dem Skript? –

+0

Welchen Editor benutzen Sie? Die meisten Editoren verfügen über die Funktion zum Anzeigen von Zeilennummern, sind jedoch häufig nicht standardmäßig eingeschaltet. – cdarke

+0

Dies ist ein Shell-Zugriff auf die Pi und ich bearbeite es mit Nano. Wc -l-Befehl arbeitete für mich :) –

Antwort

3

Sie dieverwenden können 10 Befehl:

wc -l yourScript.py

0

Sie können get the path of the script being run und dann die Datei lesen, alle Zeilen zu zählen, die weder leer noch beginnen mit einem # Symbol sind oder beiden ''' oder """ (von denen alle bezeichnen Kommentare):

#!/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) 

Dies gibt:

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! Danke an dich. Obwohl, was ich wollte, war einfacher; nur eine Befehlszeile. Allerdings muss ich zugeben, das gibt mir eine Idee, die mein Skript unterstützt .. Danke an dich :) –