Как читать текстовый файл построчно, как набор команд - PullRequest
1 голос
/ 11 апреля 2019

У меня есть текстовый файл, в котором записано имя функции вместе с такими параметрами, как «insert 3», где мне нужно прочитать вставку и 3 по отдельности для вызова функции insert с параметром 3.

До сих пор я открыл файл и вызвал .readlines (), чтобы разделить каждую строку в список каждой строки текста. Сейчас я пытаюсь найти способ применить .split () к каждому элементу рекурсивно. Я должен сделать это с помощью функционального программирования, и я не могу использовать цикл for для применения функции .split ().

def execute(fileName):
    file = open(fileName + '.txt', 'r').readlines()
    print(file)
    reduce(lambda x, a: map(x, a), )

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

1 Ответ

1 голос
/ 11 апреля 2019

Эй, я только что написал код на repl.it , вы должны проверить это. Но вот разбивка.

  1. Читать каждую строку из файла
  2. Теперь вам нужен список, в котором каждый элемент является новой строкой из файла

    lines = ["command argument", "command argument" ... "command argument"]
    
  3. Теперь перебираем каждый элемент в списке, где вы разбиваете элемент на "" (пробел), и добавляете его в новый список, где будут храниться все команды и их соответствующие аргументы.

    for line in lines:
        commands.append(line.split(" "))
    
  4. Теперь список команд должен быть многомерным массивом, содержащим такие данные, как

    commands = [["command", "argument"], ["command", "argument"], ... ["command", "argument"]]
    
  5. Теперь вы можете просто перебирать каждый подсписок, где значение в индексе 0 является командой, а значение в индексе 1 является аргументом. После этого вы можете использовать операторы if для проверки того, какую команду / функцию запустить с каким типом данных в качестве аргумента

ЗДЕСЬ ВСЕ КОД:

    command = []
    with open("command_files.txt", "r") as f:
        lines = f.read().strip().split("\n") # removing spaces on both ends, and spliting at the new line character \n
        print(lines) # now we have a list where each element is a line from the file
        # breaking each line at " " (space) to get command and the argument
        for line in lines:
            # appending the list to command list
            command.append(line.split(" "))
       # now the command list should be a multidimensional array
       # we just have to go through each of the sub list and where the value at 0 index should be the command, and at index 1 the arguments
       for i in command:
           if i[0] == "print":
               print(i[1])
           else:
               print("Command not recognized")
...