Добавлена совместимость с python 2.6

git-svn-id: http://svn.calculate.ru/calculate2/calculate-lib/trunk@2507 c91db197-33c1-4113-bf15-f8a5c547ca64
develop
asamoukin 15 years ago
parent d8081de410
commit cef116c9f2

@ -21,7 +21,7 @@ import stat
import re import re
import xml.dom.minidom import xml.dom.minidom
from xml import xpath from xml import xpath
import popen2 import subprocess
import types import types
import copy import copy
import random import random
@ -1854,7 +1854,10 @@ class _file(_error):
nameFile = self.nameFileNew nameFile = self.nameFileNew
if profile=="Old" and self.nameFileOld: if profile=="Old" and self.nameFileOld:
nameFile = self.nameFileOld nameFile = self.nameFileOld
fout, fin = popen2.popen2("file %s"%(nameFile)) sp = subprocess.Popen("file '%s'"%nameFile, stdin=subprocess.PIPE,
stdout=subprocess.PIPE, close_fds=True,
shell=True)
fout, fin = (sp.stdout, sp.stdin)
fin.close() fin.close()
textLine = fout.readline() textLine = fout.readline()
fout.readlines() fout.readlines()

@ -20,7 +20,7 @@ from random import choice
from re import search, compile, S from re import search, compile, S
import os import os
import types import types
import popen2 import subprocess
def getdirlist(s_path): def getdirlist(s_path):
#Получить список директорий по указаному пути #Получить список директорий по указаному пути
@ -268,19 +268,26 @@ def runOsCommand(cmd, inStr=None, ret_first=None):
"""Выполняет внешнюю программу """Выполняет внешнюю программу
Параметры: Параметры:
cmdStrProg внешняя программа cmd внешняя программа
inStr данные передаваемые программе на страндартный вход. inStr данные передаваемые программе на страндартный вход.
ret_first вернуть только первую строку ret_first вернуть только первую строку
Возвращаемые параметры: Возвращаемые параметры:
строка/строки которую выведет внешняя программа строка/строки которую выведет внешняя программа
""" """
fout, fin = popen2.popen4(cmd) pipe = subprocess.Popen(cmd, stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
close_fds=True,
shell=True)
fout, fin, ferr = (pipe.stdout, pipe.stdin, pipe.stderr)
# если есть данные на вход, передать их # если есть данные на вход, передать их
if inStr: if inStr:
fin.write(inStr) fin.write(inStr)
fin.close() fin.close()
res = fout.readlines() res = fout.readlines()
fout.close() fout.close()
res += ferr.readlines()
ferr.close()
if res: if res:
if len(res) > 1: if len(res) > 1:
if ret_first: if ret_first:

Loading…
Cancel
Save