Хорошо -> моей задачей было написать программу, которая выполняет команды, написанные на естественном языке. Он ищет ключевые фразы, чтобы узнать, следует ли включать / выключать какую-либо программу или процесс, а также просматривать net с указанной ссылкой. Вы можете просматривать и завершать приложения столько раз, сколько хотите, и открытие работает нормально НО только один раз: c
Мне не удается заставить его работать в любом oop, чтобы вы могли открыть много приложений, убить некоторые из них, а затем, например, просмотреть net с помощью google.com
Сначала я написал скрипт, создающий список открываемых приложений в / usr / share / Applications / и назвал его bash_apps. sh
#!/usr/bin/env bash
echo > application_list
for app in /usr/share/applications/*.desktop;
do app="${app##/*/}";
echo "${app::-8}" >> application_list;
done
Затем я написал скрипт, создающий список текущих рабочих процессов (доступных для уничтожения), и назвал его bash_processes. sh
#!/usr/bin/env bash
echo > processes_list
ps -ef | awk '{print $8}' >> processes_list
А вот так выглядит код моей программы:
import os
from difflib import SequenceMatcher
import subprocess
def similar(a, b):
return SequenceMatcher(None, a, b).ratio()
def run(application):
similar_names = []
f = open('application_list', 'r')
for line in f:
line = line[:-1]
similar_names.append([similar(line, application), line])
f.close()
apps = sorted([i for i in similar_names if i[0] > 0.6], reverse=True)
if len(apps) > 1:
for i, pr in zip(range(len(apps)), apps):
print(i, pr[1])
print('Which of those programs do you want to open? Please, enter number and specify:')
n = input()
print('Turning on: ' + apps[int(n)][1])
subprocess.run(apps[int(n)][1])
else:
print('Opening ' + apps[0][1] + '...')
subprocess.run(apps[0][1])
def close(process):
os.system('./bash_processes.sh')
similar_processes = []
f = open('processes_list', 'r')
for line in f:
line = line[:-1]
similar_processes.append([similar(line, process), line])
f.close()
processes = sorted([i for i in similar_processes if i[0] > 0.4], reverse=True)
for i, pr in zip(range(len(processes)), processes):
print(i, pr[1])
print('Which process would you like to close? Please, enter number and specify:')
num = input()
print('Killing process: ' + processes[int(num)][1])
os.system('killall ' + processes[int(num)][1])
def openet(site):
os.system('opera ' + site)
turnOn = ['open', 'execute', 'on', 'run']
turnOff = ['close', 'off', 'stop', 'kill']
browse = ['internet', 'web', 'browse', 'browser']
os.system('./bash_apps.sh')
def main():
inp = input().lower().split()
if True in [(i in turnOn) for i in inp]:
run(inp[-1])
if True in [(i in turnOff) for i in inp]:
close(inp[-1])
if True in [(i in browse) for i in inp]:
openet(inp[-1])
if inp[0] == 'quit' or 'exit':
return 0
print("What do you want from me?")
while True:
main()
Кажется, это просто, но я не смог найти информацию, как это сделать. Спасибо за помощь заранее. Хорошего дня!