python / python/cpython

subprocess.Popen doesn't properly escape < or > for windows batch files

Offen
#133,545 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

OS-windows stdlib topic-subprocess type-bug
Vorherrschende Sprache
Python
Sterne
77.2k
Forks
35.9k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Bug report

Bug description:

subprocess.Popen doesn't properly escape < or > for windows batch files

example.bat

echo %*

example.py

import subprocess
from pathlib import Path

batch_file = Path().cwd() / 'example.bat'
subprocess.Popen([batch_file, 'arg1', 'arg2<99'])

Error

The system cannot find the file specified

Adding a space causes it to be correctly escaped:

subprocess.Popen([batch_file, 'arg1', 'arg2 <99'])
CPython versions tested on:

3.13

Operating systems tested on:

Windows

Linked PRs
  • gh-134544

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit dem gemeldeten subprocess.Popen-Aufruf in example.py und reproduziere ihn unter Windows mit example.bat unter Verwendung des Arguments arg2<99; vergleiche ihn anschließend mit dem Argument, das ein Leerzeichen enthält. Prüfe den verlinkten PR gh-134544 auf den aktuellen Stand der Arbeit; abgeschlossen bedeutet, dass der Fall ohne Leerzeichen korrekt maskiert wird und die Regression abgedeckt ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
operating-systems
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.