Почему моя функция добавляет строку имени файла вместо строк самого файла? - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь добавить строки файла (.py файл) в список, чтобы посчитать строки и выяснить, какие строки являются кодом, используя условный оператор.Проблема в том, что моя функция, которую я создал, читает «имя файла» вместо строк самого файла.Где я ошибся с этим.Я удивлен, что зашел так далеко ... это работает, но не по правильной причине.

from tkinter.filedialog import askopenfilename
import time

def getFileName():
    sourceCode = askopenfilename() # Opens dialog box to locate and select file
    return sourceCode

def scLines():
    scList = []
    sourceCode = getFileName()
    for line in sourceCode:
        if line[0] != "#" or line != "":
           scList.append(line)
    return scList

def countscLine():
    lineCount = len(scLines())
    return lineCount

def fCount():
    fList = []
    sourceCode = getFileName()
    for line in sourceCode:
        if line[0:3] == 'def ':
            fAmout.append(line)
    lineCount = len(fList)
    return fList

# Get file name from user
def main():
    print("Select the file to be analyzed")
    time.sleep(5) # Waits 5 seconds before initiating function
    sourceCode = getFileName()
    print("The file is", sourceCode)
    print("The source code has ", countscLine(), "lines of code, and", fCount(), "functions.")
    print(scLines())
    print("")

main()

1 Ответ

4 голосов
/ 29 апреля 2019

Проблема for line in sourceCode:.Вам действительно нужно открыть файл.

with open(sourceCode) as f:
    for line in f:
        if line[0] != "#" or line != "":
           scList.append(line)

Я бы порекомендовал переименовать некоторые из ваших переменных, чтобы было более понятно, что они на самом деле делают.Например, я бы назвал sourceCode sourceCodefn или аналогичный, чтобы указать, что это имя файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...