Другие языки программирования и технологии

Связь Питона и C#. Помогите

В общем такая тема, написал простенькую программу на Питоне которое выдаёт случайное английское слово и его перевод. Оригинальное слово хранится в 1 переменной а переведённое в другой.

Как мне сделать так что бы моя программа C# могла считывать эти переменные? Ещё проблема в том что нужно что бы эти слова каждые 5 минут менялись. Как вариант можно просто каждые 5 минут запускать этот код С#, считать как то переменные и сразу же выключить процесс.
В общем помогите
Один из способов обеспечить взаимодействие между вашей программой на Python и программой на C# - это использовать файлы для обмена данными. Ваша программа на Python может записывать значения переменных в файл, а программа на C# может считывать эти значения из файла.

Например, вы можете модифицировать вашу программу на Python таким образом, чтобы она записывала значения переменных в текстовый файл каждые 5 минут:

```python
import time

while True:
# Генерация случайного слова и его перевода
word = generate_random_word()
translation = translate_word(word)

# Запись значений переменных в файл
with open('data.txt', 'w') as f:
f.write(f'{word}\n{translation}')

# Ожидание 5 минут
time.sleep(5 * 60)
```

Затем вы можете написать программу на C#, которая будет считывать данные из этого файла и использовать их по своему усмотрению:

```csharp
while (true)
{
// Чтение данных из файла
string[] lines = File.ReadAllLines("data.txt");
string word = lines[0];
string translation = lines[1];

// Использование данных
// ...

// Ожидание 5 минут
Thread.Sleep(5 * 60 * 1000);
}
```

Это один из возможных способов решения вашей задачи. Есть и другие способы обеспечить взаимодействие между программами на разных языках программирования, например через сокеты или используя общую базу данных.
МГ
Максим Голотюк
241
Лучший ответ
Андрей Казачков Ты кон4?
Ты мне науя сообщениями из GPT отвечаешь??? Я посмотрю как ты будешь в ручную данные обновлять с твоим таймером ьlять
И что ты будешь делать если внезапно сохранить их не получится??? Заново перепишешь? В рот возьмешь?
Если по уму, то через SOA. Сделай из своего питона сервис SOA и пользуйся им на здоровье из любых приложений и даже по сети.
Если по-быстрому, то через файлы.
Для того, чтобы ваша программа на C# могла считывать переменные из программы на Python, вы можете использовать механизм межпроцессного взаимодействия (IPC) между двумя языками. Существует несколько способов реализации IPC, один из которых - использование сокетов.

Ваша программа на Python может создавать серверный сокет и отправлять значения переменных в виде сообщений по запросу от клиента (в данном случае - программа на C#). Затем ваша программа на C# может подключаться к серверному сокету и читать значения переменных.

Вот пример кода на Python, который создает серверный сокет и отправляет значения переменных каждые 5 минут:

scss
Copy code
import socket
import time

word = "cat"
translation = "кот"

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 5000))
server_socket.listen(1)

while True:
client_socket, address = server_socket.accept()
print(f"Connection from {address} has been established!")
client_socket.send(word.encode())
client_socket.send(translation.encode())
client_socket.close()
time.sleep(300)
Ваша программа на C# может подключаться к серверному сокету и читать значения переменных:

csharp
Copy code
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace SocketClient
{
class Program
{
static void Main(string[] args)
{
byte[] bytes = new byte[1024];

while (true)
{
try
{
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5000));
int bytesReceived = socket.Receive(bytes);
string word = Encoding.ASCII.GetString(bytes, 0, bytesReceived);
bytesReceived = socket.Receive(bytes);
string translation = Encoding.ASCII.GetString(bytes, 0, bytesReceived);
socket.Shutdown(SocketShutdown.Both);
socket.Close();
Console.WriteLine($"{word} - {translation}");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
System.Threading.Thread.Sleep(300000);
}
}
}
}
Этот код будет подключаться к серверному сокету каждые 5 минут, читать значения переменных и выводить их на экран.

Помните, что важно закрывать сокеты после использования, чтобы избежать утечек памяти и проблем с соединением.