LINUX.ORG.RU

Сообщения cdi1989

 

Как заэкранировать пробел

При запуске стороннего процесса проблемы с аргументом «cwd»

proc = subprocess.Popen(["bash "+'"'+full_dir+'"'+"/SOLVER_BASH"], cwd = r'/home/kalina/Рабочий стол/Тестовый_пример', shell = True, stdout=file, stderr=file)

Вот такая ошибка:

fileName::stripInvalid() called for invalid fileName /home/kalina/Рабочийстол/Тестовый_пример

Объединяет «Рабочийстол» и все.

 

cdi1989
()

Как запустить файл с пробелом в имени??

Запускаю файл, имеющий путь «/home/kalina/Рабочий стол/......» с помощью команды subprocess.Popen

Ничего не работает, так как есть пробел названии директории. Что можно сделать.

 

cdi1989
()

Как задать виджет для графика??

Уважаемые форумчане. Просьба помочь. Имеется небольшая программка, из которой запускается построение графика с помощью библиотеки Matplotlib. Вот код, который строит график. При этом открывается отдельное окно в графике.

import numpy as np
import matplotlib.pyplot as plt

x1 = np.arange(-np.pi, np.pi, 0.1)
x2 = np.arange(-np.pi, 5 * np.pi, 0.1)

y1 = np.sin(x1)
y2 = np.sin(x2)

plt.plot(x1, y1)
plt.plot(x2, y2)

plt.show()

Но я хочу, чтобы оно открывалось в MainWindow (Моей главной программе) в качестве например правого виджета. Что-то типа такого: self.name_right_widget.setWidget(#здесь ссылка на окно графика). Можно ли что-нибудь сделать??

 

cdi1989
()

Как остановить процесс

Уважаемые форумчане. Уже замучался. Имеется программа, в которой запускается дочерний поток, а в нем процесс:

class MyThread(QtCore.QThread):
    def __init__(self, full_dir, parent=None):
        QtCore.QThread.__init__(self, parent)
    def run(self):
        file = open("/home/kalina/OpenFOAM/out.log", "a")
        proc = subprocess.Popen(["bash /*/*/OpenFOAM/QW"], 
        cwd = full_dir, shell = True, stdout=file, stderr=file)

Запускаю поток командой .start(). Все нормально работает При попытке завершить процесс командой

proc.kill()
ничего не происходит. Сабпроцесс так дальше и выполняется. Как поток остановить вообще непонятно

 

cdi1989
()

Не работает перерисовка на matplotlib

Уважаемые форумчане, просьба помочь. Данный код должен показывать движущуюся синусоиду. Но не работает и ошибок не показывает.

# -*- coding: UTF-8 -*-

import math

# Импортируем один из пакетов Matplotlib
import pylab

# Импортируем пакет со вспомогательными функциями
from matplotlib import mlab

# Интервал изменения переменной по оси X
xmin = -20.0
xmax = 20.0

# Шаг между точками
dx = 0.01

# Создадим список координат по оиси X на отрезке [-xmin; xmax], включая концы
xlist = mlab.frange (xmin, xmax, dx)

# !!! Включаем интерактивный режим
pylab.ion()

# У нас будет 50 кадров
for n in range (50):
    # Данные для очередного кадра
    ylist = [math.sin (x + n / 2.0) for x in xlist]

    # !!! Очистим график
    pylab.clf()

    # Выведем новые данные
    pylab.plot (xlist, ylist)

    # !!! Нарисуем их
    # !!! Обратите внимание, что здесь используется функция draw(), а не show()
    pylab.draw()

# !!! Закроем окно, иначе при завершении программы получим ошибку
pylab.close()

 

cdi1989
()

Не получается импортировать matplotlib

Уважаемые форумчане, просьба помочь. Вроде установил его...при попытке поставить снова пишет, что уже установлена последняя версия, а при запуске скрипта вот:

Traceback (most recent call last):
  File "/home/kalina/Рабочий стол/UГрафики/pb_form.py", line 8, in <module>
    import matplotlib.pyplot
ImportError: No module named 'matplotlib'

 

cdi1989
()

Как задать индикатор выполнения процесса

Уважаемые форумчане. Имеется файл с индикатором процесса. Хочу, чтобы пока процесс выполняется пользователь видел как бегает полоска. С индикатором все норм, он работает. Но он должен открываться в качестве формы из главной программы по нажатию кнопки, т.е. нажимаю на кнопку и должна отобразиться форма с индикатором:

pb = pb_form()
pb.setGeometry(850, 400, 300, 100)
pb.setWindowTitle("Форма c индикатором")         
pb.show()

Запускаем процесс:

proc = subprocess.Popen(.....

Дожидаемся, пока выполнится

while proc.poll() is None:
           time.sleep(0.5)
          
print(proc.returncode)

Ну и далее, если код «0 (то есть процесс завершился без ошибок)», то закрываем форму с индикатором

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

 

cdi1989
()

Как сделать консоль скрытой

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

proc = subprocess.Popen("konsole -workdir " + full_dir + " -e bash /*/*/OpenFOAM/QW", shell=True)

 

cdi1989
()

Убить процесс в python

Здравствуйте, уважаемые форумчане. Просьба помочь. Имеются две кнопки. По нажатию на первую срабатывает функция запуска процеcса:

def on_task_open():
    global proc
    import subprocess
    from subprocess import Popen, PIPE


    proc = subprocess.Popen("konsole -workdir " + full_dir + " -e bash /*/*/OpenFOAM/QW", shell=True)

Работает нормально. Теперь нужно, чтобы после нажатия другой кнопки процесс завершался и консоль закрывалась. Но не работает(((

def on_task_close():
       proc.kill()

 

cdi1989
()

Программное закрытие консоли

Уважаемые форумчане. просьба помочь. В моей программе на PYTHONe при нажатии кнопки выполняется команда:

os.system(«konsole -workdir » + full_dir)

и открывается консоль. Я создал еще одну кнопку для закрытия этой консоли. Какую нужно передать команду, чтобы вновь открытая консоль закрылась??

 

cdi1989
()

Как определить количество компонентов в QHBoxLayout??

types_hbox = QtGui.QHBoxLayout()
types_hbox.addWidget(widget1)
types_hbox.addWidget(widget2)

 

cdi1989
()

Замена в строке с помощью Python

Большая просьба помочь. У меня есть несколько одинаковых слов в строке. Нужно произвести замену лишь некоторых из этих одинаковых слов. В питоне есть метод: S.replace(old, new) — заменить в строке S ВСЕ ВХОЖДЕНИЯ подстроки old на подстроку new. А если мне надо заменить не все, а например пятое или третье, то как быть??? S.replace(old[5], new) - вот так не работает. все равно во всех заменяет. Неужели в питоне нет решений для казалось бы такой простой задачи??

 

cdi1989
()

Не срабатывает re.sub

Имеется небольшой текстовый фрагмент, помещенный в переменную data:

divSchemes
{
default none;
div(tauMC) Gauss linear;
}

Нужно поменять четвертую строчку на div(tauMC) corrected;

Вот предполагаемый код, но замена не выполняется:

dtMC_reg = re.compile(r"div\(tauMC\)\s*\w*\s\w*(?=[;])")
dtMC_mas = dtMC_reg.findall(data)
dtMC_txt_add = «div(tauMC) corrected»
data = re.sub(dtMC_mas[0], dtMC_txt_add, data)

Вроде и скобки я экранирую: div\(tauMC\). Но не работает И ЗАМЕНА НЕ ВЫПОЛНЯЕТСЯ, а если нет скобок, то есть

divSchemes
{
default none;
divtauMC Gauss linear;
}

то работает. Уже устал искать ошибку, может в кодировке дело

Но ясно, что здесь все завязано со скобками: div(tauMC)

 

cdi1989
()

Обратиться из модального окна в главное на Питоне

Нужно перед закрытием модального обратиться в главное и кое-что там выполнить. Вот начало кода главного: class MainWindow(QtGui.QMainWindow): def __init__(self, parent=None): QtGui.QMainWindow.__init__(self, parent)

Вот начало кода модального:

class mesh_form(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent)

Пытаюсь обратиться к главному через parent. но он пишет, что объект None

 

cdi1989
()

Передать содержимое переменной

Уважаемые знатоки питона, у меня такой вопрос. нужно выполнить системную команду перехода в директорию. Вот если я пишу так: os.system(“konsole -workdir /home”) то все работает, а если вот так dir = “/home” os.system(“konsole -workdir dir”) то не работает. Подскажите плиз, что делать

 

cdi1989
()

Передать команду в konsole и выполнить ее

Здравствуйте, уважаемые знатоки Linux. Помогите плиз. Пишу приложение под Линукс на Питоне. Мне нужно передать в консоль команду, ну например «hepl» и выполнить ее там. Вот что я делаю: os.system('konsole -e help') При этом консоль запускается, но команда не выполняется и выводится сообщение: Предупреждение: Невозможно найти «help», вместо этого будет запущена программа «/bin/bash». Проверьте параметры вашего профиля.

Что сделать, чтобы заработало? заранее спасибо

 , ,

cdi1989
()

RSS подписка на новые темы