문제

나는 현재는 데 중요한 문제와 python 스크립트입니다.스크립트를 실행되는 임의의 명령을 통해서 핸들러로 변환하 잘못된 오류 보고를 올바른 오류 보고를 사용할 수 있습니다.

이 문제는 내가 하는 점점 스크립트가 제대로 작동하려면 윈도우에서 명령을 포함하는 앰퍼샌드 그것에서의 경로입니다.나는 시도했을 인용하는 명령을 탈출,앰퍼샌드와^및 둘 다 작동합니다.나는 지금 아이디어.어떤 방법이 있나요?

을 명확히 하에서 응답을 현재:

  1. 내가 사용하여 하위 프로세스 모듈
  2. 나는 전달하는 명령 라인+에서 인수로 목록
  3. 문제입하는 경로로 명령에 자체의 인수
  4. 해봤을 인용하는 명령입니다.그것이 원인 [Error 123] The filename, directory name, or volume label syntax is incorrect
  5. 나는 사용하지 않는 셸 인수(도 shell=false)
  6. 경우에는 그것이 문제,나를 잡아 관 stderr 에 대한 처리는 하지만,그것을 무시하고 표준출력과 표준입력
  7. 그것은 단지 사용하기 위해 윈도우에서는 현재 및 예상대로 작동하는 다른 모든 경우에서 나는 지금까지 테스트.
  8. 는 명령은 실패입니다:

p=는 하위 프로세스.Popen(prog,stderr=는 하위 프로세스.파이프 bufsize=-1)

을 때 첫 번째 요소의 목록에'prog'에 포함된 앰퍼샌드.인용하는 이 첫 번째 문자열이 작동하지 않습니다.

도움이 되었습니까?

해결책

목록을 사용하고 있고 쉘 확장이 없는지 확인하십시오.

subprocess.Popen(['command', 'argument1', 'argument2'], shell=False)

다른 팁

적절한 답변은 그보다 더 많은 정보가 필요합니다. 당신은 실제로 무엇을하고 있습니까? 어떻게 실패합니까? 하위 프로세스 모듈을 사용하고 있습니까? 인수 목록과 shell = false (또는 쉘 인수 없음)를 전달하고 있습니까? 아니면 실제로 쉘을 호출하고 있습니까?

&가 포함 된 주장을 인용 해보십시오.

wget "http://foo.com/?bar=baz&baz=bar"

일반적으로 Linux 쉘에서해야 할 일입니다.

"ampersand를 탈출 ^"

확실합니까 ^ Windows의 탈출 문자입니까? 사용해서는 안됩니다 \?

응답 내 자신의 질문:

을 인용하는 실제 명령을 통과하면 매개 변수는 목록이 정상적으로 작동하지 않음(명령이 첫 번째 항목의 목)그래서 문제를 해결하기 위해 내가 목록으로 공백으로 구분된 문자열을 전달되는 것으로 하위 프로세스다.

더 나은 솔루션도 환영합니다.

다음과 같은 상황을 시도합니다.

exe = 'C:/Program Files (x86)/VideoLAN/VLC/VLC.exe'
url = 'http://translate.google.com/translate_tts?tl=en&q=hello+world'
subprocess.Popen([exe, url.replace("&","^&")],shell=True)

이것은 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top