Python을 사용하여 Windows 10에서 7zip 진행률 추적

어치

나는 7zip그것을 호출하려는 코드에서 진행 상황을 숨기는 몇 가지 문제가 있음을 이해 합니다 (이유는 확실하지 않음).

나는 보았다 여기 있다는 -bsp1플래그가 파이썬의 숨겨진 진행하지만, 여전히 아무것도 표시해야합니다 :

from subprocess import Popen, PIPE
from time import sleep

cmd = Popen('7z.exe e D:\stuff.rar -od:\stuff -aoa -bsp1'.split(), stdout=PIPE, stderr=PIPE)

while cmd.poll() !=0:  # Not sure this helps anything
    out = cmd.stdout.read()
    print(out)
    sleep(1)

명령 줄에서 7z 명령을 실행하면 압축을 풀 때까지 좋은 비율을 얻을 수 있습니다.

Python에서는 7z의 전주곡 출력 (경로, 유형 등)이 표시되고 그 b''Ctrl-c

7z는 내가 "실제"터미널에서 호출하지 않는다는 것을 어떻게 알 수 있습니까? 어떻게 든 내가 사용하고있는 것처럼 보이게 할 수 있습니까 ctypes? Windows 커널 호출 / API를 사용 하고 있습니까?

이와 관련하여 언급 된 "의사 터미널"이라는 용어를 보았지만 관련성이 있는지 잘 모르겠습니다. 그렇다면 Windows의 ConPTY API가 숨겨져 있습니다.

jizhihaoSAMA

사용할 필요가 없습니다 pseudo-terminal. 나는 Windows 10에서 일하고 있습니다.

출력을 얻는 것은 쉬울 수 있지만 stdout.readline()직접 사용하면 즉시 진행 상황을 파악하기 어렵습니다 . (포함되어 \r있고 줄의 시작 부분에 커서를 놓고 7zip공백을 사용하여 채 웁니다.) 그러나 구분자로 readline()사용 합니다. \r\n.

내 예에서는 stdout.read(1)출력을 직접 가져 오는 데 사용 합니다. 진행률 라인이 12이므로 숫자를 사용하여 확인합니다.

import subprocess

s = "D:/7-Zip/7z.exe e E:/work/Compile/python/python_project/temp/test.zip -oE:/work/Compile/python/python_project/temp/test -aoa -bsp1"
p = subprocess.Popen(s.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
i = 0
while True:
    line = p.stdout.readline()
    if line:
        if i == 11:
            s = b""
            while True:
                char = p.stdout.read(1)
                if char == b"E": # "Everything is ok" means end
                    break
                s += char
                if char == b"%":
                    print(s.decode("gbk"))
                    s = b""
        print(line.decode("gbk"))
        i += 1

이것은 나에게 준다 : 여기에 이미지 설명 입력


개선 할 수 있습니다.

end내 코드에서. 의 조건은 if char == b"E".I do n't think it is good. 또한 .decode("gbk")각 인쇄 줄에서 를 제거 하면 파일 이름과 번호가 다음과 같이 표시됩니다.

여기에 이미지 설명 입력

문자 분할은 cmd와 다르지만 (일반적으로 x% xx - filename) 따라서 한 줄 지연이 있습니다.

여기에 이미지 설명 입력

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

cmd 내에서 7zip의 추출 진행률을 표시하는 방법은 무엇입니까?

분류에서Dev

7zip을 사용하여 특정 파일을 재귀 적으로 추출하는 Windows 배치 스크립트

분류에서Dev

IBM Data Science Experience Notebook에서 7zip 파일을 추출하는 방법

분류에서Dev

7zip을 사용하여 중첩 된 zip을 추출하고 성공적으로 추출한 후 zip을 삭제하는 배치 파일

분류에서Dev

7zip 하위 폴더에서 * .zip 추출

분류에서Dev

7zip을 사용하여 드라이버의 CAB 파일을 추출합니다. 어디에서 추출합니까?

분류에서Dev

7Zip을 사용하여 덮어 쓰기 충돌 중에 사용자 지정 접두사로 추출 파일 이름 자동 변경

분류에서Dev

7zip 명령 줄 x 옆에 l을 추가하는 방법

분류에서Dev

대규모 폴더 모음에서 7zip을 사용하여 폴더를 개별적으로 압축하는 방법이 있습니까?

분류에서Dev

Windows Phone 7에서 진행률 표시기의 색상을 변경하는 방법

분류에서Dev

CAShapeLayer에 애니메이션을 적용하여 진행률 원 그리기

분류에서Dev

Windows에서 7zip "extract to". ""컨텍스트 메뉴 옵션을 모방하는 방법

분류에서Dev

각 7zip 아카이브에서 정확히 하나의 파일 (임의)을 대량으로 추출 (Unix)

분류에서Dev

7zip 파일을 폴더에 재귀 적으로 보관

분류에서Dev

Python : tqdm을 사용하여 작업 진행 상황 추적

분류에서Dev

Azure Storage에 대한 비동기 파일 업로드 진행률을 추적하는 방법

분류에서Dev

Windows10에서 Bitbucket-api 및 Python을 사용하여 Bitbucket에서 zip을 다운로드하는 방법

분류에서Dev

셸 스크립트에서 병렬로 실행되는 명령에 대한 진행률 표시 줄을 추가하고 exit_code를 추적합니다.

분류에서Dev

XAML 및 C #을 사용하여 Windows Phone 8 앱용 사용자 지정 진행률 표시 줄 빌드

분류에서Dev

Element.animate ()를 사용하여 네거티브로 진행률 표시 줄에 애니메이션을 적용하는 방법

분류에서Dev

R을 사용하여 기존 tcltk 창에 진행률 표시 줄 표시

분류에서Dev

C #을 사용하여 ProgressBar에 다운로드 진행률 표시

분류에서Dev

Java를 사용하여 콘솔에 진행률 표시 줄을 그립니다.

분류에서Dev

SSIS는 7zip을 사용하여 파일 압축

분류에서Dev

진행률 표시 줄에서 동적 데이터 사용

분류에서Dev

Alamofire 4.0에서 업로드 진행률이있는 레이블이있는 진행률 표시 줄을 추가하는 방법

분류에서Dev

최대 압축을 위해 "zip -9"에 해당하는 7zip?

분류에서Dev

기계 친화적이지 않은 출력과 함께 7zip 명령 줄을 사용하여 zip 파일의 내용을 나열합니다.

분류에서Dev

7-Zip을 사용하여 재귀 적으로 추출

Related 관련 기사

  1. 1

    cmd 내에서 7zip의 추출 진행률을 표시하는 방법은 무엇입니까?

  2. 2

    7zip을 사용하여 특정 파일을 재귀 적으로 추출하는 Windows 배치 스크립트

  3. 3

    IBM Data Science Experience Notebook에서 7zip 파일을 추출하는 방법

  4. 4

    7zip을 사용하여 중첩 된 zip을 추출하고 성공적으로 추출한 후 zip을 삭제하는 배치 파일

  5. 5

    7zip 하위 폴더에서 * .zip 추출

  6. 6

    7zip을 사용하여 드라이버의 CAB 파일을 추출합니다. 어디에서 추출합니까?

  7. 7

    7Zip을 사용하여 덮어 쓰기 충돌 중에 사용자 지정 접두사로 추출 파일 이름 자동 변경

  8. 8

    7zip 명령 줄 x 옆에 l을 추가하는 방법

  9. 9

    대규모 폴더 모음에서 7zip을 사용하여 폴더를 개별적으로 압축하는 방법이 있습니까?

  10. 10

    Windows Phone 7에서 진행률 표시기의 색상을 변경하는 방법

  11. 11

    CAShapeLayer에 애니메이션을 적용하여 진행률 원 그리기

  12. 12

    Windows에서 7zip "extract to". ""컨텍스트 메뉴 옵션을 모방하는 방법

  13. 13

    각 7zip 아카이브에서 정확히 하나의 파일 (임의)을 대량으로 추출 (Unix)

  14. 14

    7zip 파일을 폴더에 재귀 적으로 보관

  15. 15

    Python : tqdm을 사용하여 작업 진행 상황 추적

  16. 16

    Azure Storage에 대한 비동기 파일 업로드 진행률을 추적하는 방법

  17. 17

    Windows10에서 Bitbucket-api 및 Python을 사용하여 Bitbucket에서 zip을 다운로드하는 방법

  18. 18

    셸 스크립트에서 병렬로 실행되는 명령에 대한 진행률 표시 줄을 추가하고 exit_code를 추적합니다.

  19. 19

    XAML 및 C #을 사용하여 Windows Phone 8 앱용 사용자 지정 진행률 표시 줄 빌드

  20. 20

    Element.animate ()를 사용하여 네거티브로 진행률 표시 줄에 애니메이션을 적용하는 방법

  21. 21

    R을 사용하여 기존 tcltk 창에 진행률 표시 줄 표시

  22. 22

    C #을 사용하여 ProgressBar에 다운로드 진행률 표시

  23. 23

    Java를 사용하여 콘솔에 진행률 표시 줄을 그립니다.

  24. 24

    SSIS는 7zip을 사용하여 파일 압축

  25. 25

    진행률 표시 줄에서 동적 데이터 사용

  26. 26

    Alamofire 4.0에서 업로드 진행률이있는 레이블이있는 진행률 표시 줄을 추가하는 방법

  27. 27

    최대 압축을 위해 "zip -9"에 해당하는 7zip?

  28. 28

    기계 친화적이지 않은 출력과 함께 7zip 명령 줄을 사용하여 zip 파일의 내용을 나열합니다.

  29. 29

    7-Zip을 사용하여 재귀 적으로 추출

뜨겁다태그

보관