LINUX.ORG.RU

Сообщения cdi1989

 

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

Форум — Development

При запуске стороннего процесса проблемы с аргументом «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
()

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

Форум — Development

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

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

 

cdi1989
()

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

Форум — Development

Уважаемые форумчане. Просьба помочь. Имеется небольшая программка, из которой запускается построение графика с помощью библиотеки 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
()

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

Форум — Development

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

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

Форум — Development

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

# -*- 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

Форум — Development

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

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
()

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

Форум — Development

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

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
()

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

Форум — Development

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

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

 

cdi1989
()

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

Форум — Development

Здравствуйте, уважаемые форумчане. Просьба помочь. Имеются две кнопки. По нажатию на первую срабатывает функция запуска проце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
()

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

Форум — Development

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

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

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

 

cdi1989
()

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

Форум — Development
types_hbox = QtGui.QHBoxLayout()
types_hbox.addWidget(widget1)
types_hbox.addWidget(widget2)

 

cdi1989
()

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

Форум — Development

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

 

cdi1989
()

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

Форум — Development

Имеется небольшой текстовый фрагмент, помещенный в переменную 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
()

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

Форум — Development

Нужно перед закрытием модального обратиться в главное и кое-что там выполнить. Вот начало кода главного: 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
()

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

Форум — Development

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

 

cdi1989
()

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

Форум — Development

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

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

 , ,

cdi1989
()

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