Форум сайта python.su
Всем спасибо,
нужного добился так
import win32process
CreationFlag = win32process.IDLE_PRIORITY_CLASS
ProcessZipBackup = subprocess.Popen(['7z.exe','a', FileNameArchive, self.FileNameBackup], shell=True, \
stdout=subprocess.PIPE,
creationflags = CreationFlag)
Офлайн
P.S. Поправьте меня если я ошибаюсь, при использовании start создаются 2 процесса : start и 7z. Мы имеем возможность отследить завершение процесса start, а завершение второго 7z второго никак..Абсолютно верно, это и есть причина.
нужного добился такСобственно, я тоже так делал, но у меня были непонятные проблемы с правами запуска под 2003 сервером, по-этому я и менял приоритет у вызываемой программы (точнее не я сам).
P.S. я из ms sql сервера делаю дамп базы данных в файл, а потом его упаковываю, может как то можно красиво сделать без создания временного файла?
pylzma usage
If you need to compress larger amounts of data, you should use the streaming version of the library. If supports compressing any file-like objects:Using a similar technique, you can decompress large amounts of data without keeping everything in memory:>>> from cStringIO import StringIO
>>> fp = StringIO('Hello world!')
>>> c_fp = pylzma.compressfile(fp, eos=1)
>>> compressed = ''
>>> while True:
... tmp = c_fp.read(1)
... if not tmp: break
... compressed += tmp
...
>>> pylzma.decompress(compressed)
'Hello world!'However this only works for streams that contain the End Of Stream marker. You must provide the size of the decompressed data if you don't include the EOS marker:>>> from cStringIO import StringIO
>>> fp = StringIO(pylzma.compress('Hello world!'))
>>> obj = pylzma.decompressobj()
>>> plain = ''
>>> while True:
... tmp = fp.read(1)
... if not tmp: break
... plain += obj.decompress(tmp)
...
>>> plain += obj.flush()
>>> plain
'Hello world!'Please note that the compressed data is not compatible to the lzma.exe command line utility! To get compatible data, you can use the following utility function:>>> from cStringIO import StringIO
>>> fp = StringIO(pylzma.compress('Hello world!', eos=0))
>>> obj = pylzma.decompressobj(maxlength=13)
>>> plain = ''
>>> while True:
... tmp = fp.read(1)
... if not tmp: break
... plain += obj.decompress(tmp)
...
>>> plain += obj.flush()
Traceback (most recent call last):
...
ValueError: data error during decompression
>>> obj.reset(maxlength=12)
>>> fp.seek(0)
>>> plain = ''
>>> while True:
... tmp = fp.read(1)
... if not tmp: break
... plain += obj.decompress(tmp)
...
>>> plain += obj.flush()
>>> plain
'Hello world!'>>> import struct
>>> from cStringIO import StringIO
>>> def compress_compatible(data):
... c = pylzma.compressfile(StringIO(data))
... # LZMA header
... result = c.read(5)
... # size of uncompressed data
... result += struct.pack('<Q', len(data))
... # compressed data
... return result + c.read()
Офлайн