pytonw.exe lub python.exe?
Krótko mówiąc: pythonw.exe
nic nie robi, python.exe
nic nie akceptuje (którego z nich powinienem użyć?)
Test.py:
print "a"
Okno CMD:
C:\path>pythonw.exe test.py
<BLANK LINE>
C:\path>
C:\path>python.exe test.py
File "C:\path\test.py", line 7
print "a"
^
SyntaxError: invalid syntax
C:\path>
Proszę, powiedz mi, co robię źle. 5 answers
Jeśli nie chcesz, aby pojawiało się okno terminala podczas uruchamiania programu użyj pythonw.exe
;
W przeciwnym razie użyj python.exe
Odnośnie błędu składni: print
obecnie występuje w 3.x
Więc użyj zamiast:
print("a")
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-14 16:33:34
Aby podsumować i uzupełnić istniejące odpowiedzi:
-
python.exe
jest aplikacją konsolową (terminal) do uruchamiania skryptów typu CLI .- chyba że uruchamia się z istniejącego okna konsoli,
python.exe
otwiera nowe okno konsoli . -
strumienie Standardowe
sys.stdin
,sys.stdout
isys.stderr
są połączone z oknem konsoli . -
Wykonanie jest synchroniczne Po uruchomieniu z
cmd.exe
lub Okno konsoli PowerShell: Zobacz eryksun ' s 1st komentarz poniżej.- jeśli zostało utworzone nowe okno konsoli, pozostaje ono otwarte do momentu zakończenia skryptu.
- Po wywołaniu z istniejącego okna konsoli znak zachęty jest blokowany do momentu zakończenia skryptu.
- chyba że uruchamia się z istniejącego okna konsoli,
-
pythonw.exe
jest to aplikacja GUI do uruchamiania skryptów GUI/no-UI-at-all.- brak okna konsoli jest otwarte.
- wykonanie jest asynchroniczne :
- Po wywołaniu z okna konsoli, skrypt jest uruchamiany tylko , A znak zachęty powraca natychmiast, niezależnie od tego, czy skrypt jest nadal uruchomiony, czy nie.
-
strumienie Standardowe
sys.stdin
,sys.stdout
isys.stderr
są niedostępne.-
Uwaga: jeśli nie podejmiesz dodatkowych kroków , ma to potencjalnie nieoczekiwaną stronę efekty :
- nieobsługiwane wyjątki powodują, że skrypt przerywa po cichu.
-
W Pythonie 2.x, po prostu próba użycia
print()
może spowodować, że tak się stanie (W 3.x,print()
po prostu nie ma efektu). - aby zapobiec temu z poziomu skryptu , A aby dowiedzieć się więcej, Zobacz moją odpowiedź.
-
Ad-hoc , możesz użyć przekierowania wyjścia:Dzięki., @ handle.
pythonw.exe yourScript.pyw 1>stdout.txt 2>stderr.txt
(z PowerShell:cmd /c pythonw.exe yourScript.pyw 1>stdout.txt 2>stderr.txt
) do przechwytywania wyjścia stdout i stderr w plikach .
Jeśli jesteś pewien, że użycieprint()
jest jedynym powodem, dla którego twój skrypt nie działa po cichu zpythonw.exe
, a nie jesteś zainteresowany wyjściem stdout, użyj polecenia @ handle z komentarzy:pythonw.exe yourScript.pyw 1>NUL 2>&1
Uwaga : ta technika przekierowania wyjścia nie działa , a nie podczas wywoływania*.pyw
skryptów bezpośrednio (W przeciwieństwie do przekazywania ścieżka do pliku skryptu dopythonw.exe
). Zobacz eryksun drugi komentarz i jego dalsze działania poniżej.
-
Uwaga: jeśli nie podejmiesz dodatkowych kroków , ma to potencjalnie nieoczekiwaną stronę efekty :
Możesz kontrolować, który z plików wykonywalnych domyślnie uruchamia Twój skrypt - na przykład po otwarciu z Eksploratora-przez wybierając odpowiednie rozszerzenie nazwy pliku :
-
*.py
pliki są domyślnie skojarzone (wywołane) zpython.exe
-
*.pyw
pliki są domyślnie skojarzone (wywołane) zpythonw.exe
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:14
Zobacz tutaj: http://docs.python.org/using/windows.html
Pytonw.exe " wyłącza okno terminala przy starcie."
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-14 16:34:20
Jeśli chcesz wywołać skrypt Pythona z innego procesu (powiedzmy z linii poleceń), użyj pythonw.exe
. W przeciwnym razie, twój użytkownik będzie stale widzieć okno cmd
uruchamiające proces Pythona. Nadal będzie uruchamiać skrypt tak samo, ale nie będzie ingerować w doświadczenie użytkownika.
Przykładem może być wysłanie wiadomości e-mail; python.exe
wyświetli okno CLI, wyśle wiadomość e-mail, a następnie zamknie okno. Pojawi się jako szybki błysk i może być uważany za nieco irytujący. pythonw.exe
, ale nadal wysyła e-mail.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-14 16:39:58
Przez jakiś czas starałem się, żeby to zadziałało. Po zmianie rozszerzenia na .pyw, upewnij się, że otwierasz właściwości pliku i kierujesz ścieżkę "Otwórz za pomocą" do pythonw.exe.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-27 05:39:14