У меня есть текстовый файл, в котором записано имя функции вместе с такими параметрами, как «вставка 3», где мне нужно прочитать вставку и 3 по отдельности, чтобы вызвать вставку функции с параметром 3.
До сих пор я открывал файл и вызывал в нем .readlines(), чтобы разделить каждую строку на список каждой строки текста. Сейчас я изо всех сил пытаюсь найти способ рекурсивно применить .split() к каждому элементу. Я должен сделать это с помощью функционального программирования, и я не могу использовать цикл for для применения функции .split().
def execute(fileName):
file = open(fileName + '.txt', 'r').readlines()
print(file)
reduce(lambda x, a: map(x, a), )
Я хотел бы использовать каждую строку независимо с разным количеством параметров, чтобы я мог вызвать свой тестовый скрипт и запустить каждую функцию.
Эй, я только что написал код на repl.it, вы должны его проверить. Но вот поломка.
Теперь вам нужен список, в котором каждый элемент представляет собой новую строку из файла.
lines = ["command argument", "command argument" ... "command argument"]
Теперь выполните итерацию по каждому элементу в списке, где вы разделили элемент по « » (пробелу), и добавьте его в новый список, где будут храниться все команды и их соответствующие аргументы.
for line in lines:
commands.append(line.split(" "))
Теперь список команд должен представлять собой многомерный массив, содержащий такие данные, как
commands = [["command", "argument"], ["command", "argument"], ... ["command", "argument"]]
Теперь вы можете просто перебирать каждый подсписок, где значение с индексом 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")