Jak uruchomić skrypt Pythona z interaktywnej powłoki IDLE?


103

Jak uruchomić skrypt w języku Python z poziomu powłoki interaktywnej IDLE?

Poniższe zgłasza błąd:

>>> python helloworld.py
SyntaxError: invalid syntax

Jak helloworld.pywygląda?
— TerryA

tak, to znaczy, że coś jest nie tak z Twoim kodem!
— Serial

12
Nie, niekoniecznie. Prawdopodobnie OP pisze python helloworld.pyw oknie powłoki IDLE i to nie działa.
— Ned Deily

Nie zadziała też w standardowym tłumaczu. Ten problem pojawił się wcześniej, gdy ludzie błędnie myślą, że zachęta interpretera jest monitem wiersza poleceń.
— Terry Jan Reedy

Powinieneś zaakceptować odpowiedź od Neda Deily, jeśli to poprawnie odpowie na twoje pytanie. Pomoże to również innym programistom szybko znaleźć poprawną odpowiedź.
— Krishna Oza

Odpowiedzi:


142

Python3 :

exec(open('helloworld.py').read())

Jeśli twój plik nie znajduje się w tym samym katalogu:

exec(open('./app/filename.py').read())

Zobacz https://stackoverflow.com/a/437857/739577, aby uzyskać informacje o przekazywaniu zmiennych globalnych / lokalnych.


W przestarzałych wersjach Pythona

Python2 Wbudowana funkcja: plik wykonywalny

execfile('helloworld.py')

Zwykle nie można go wywołać z argumentami. Ale oto obejście:

import sys
sys.argv = ['helloworld.py', 'arg']  # argv[0] should still be the script name
execfile('helloworld.py')

Przestarzałe od wersji 2.6: popen

import os
os.popen('python helloworld.py') # Just run the program
os.popen('python helloworld.py').read() # Also gets you the stdout

Z argumentami:

os.popen('python helloworld.py arg').read()

Użycie zaawansowane: podproces

import subprocess
subprocess.call(['python', 'helloworld.py']) # Just run the program
subprocess.check_output(['python', 'helloworld.py']) # Also gets you the stdout

Z argumentami:

subprocess.call(['python', 'helloworld.py', 'arg'])

Przeczytaj dokumentację, aby uzyskać szczegółowe informacje :-)


Przetestowane z tym podstawowym helloworld.py:

import sys
if len(sys.argv) > 1:
    print(sys.argv[1])

2
Czy możesz dodać przykład z argumentami wiersza poleceń.
— ViFI

1
Nie działa z Python3, a asker nie określił jawnie wersji Pythona
— Suncatcher

Dodano execdla Python3
— Hugues Fontenelle


24

Okno powłoki IDLE nie jest tym samym, co powłoka terminala (np. Działa shlub bash). Jest to raczej podobne do przebywania w interaktywnym interpreterze języka Python ( python -i). Najłatwiejszym sposobem uruchomienia skryptu w IDLE jest użycie Openpolecenia z Filemenu (może się to nieco różnić w zależności od używanej platformy), aby załadować plik skryptu do okna edytora IDLE, a następnie użyć polecenia Run-> Run Module(skrót F5).


1
Ale nie możesz przekazać argumentów. :(
— Erica Kane

3
Niestety nie, nie jest łatwo uruchomić plik Pythona w IDLE podczas przekazywania argumentów wiersza poleceń. W IDLE istnieje od dawna otwarty problem ( bugs.python.org/issue5680 ). Jedynym obejściem testowania jest ręczna inicjalizacja sys.argvna samym początku programu, na przykład pod zwykłym if __name__ == "__main__"szablonem.
— Ned Deily,

Ta odpowiedź wyjaśnia, dlaczego nie możemy uruchomić skryptu Pythona przy użyciu powłoki IDLE. Dzięki @ NedDeily
— arsho

1
Począwszy od IDLE 3.7.4, możesz teraz uruchomić moduł z argumentami. Użyj nowego Run-> Run with Customized...polecenia (skrót Shift + F5), a otworzy się wyskakujące okienko, w którym możesz podać swoje argumenty. Niestety obecnie ich nie pamięta, więc będziesz je wklejać przy każdym uruchomieniu.
— Dan Nolan

6

Spróbuj tego

import os
import subprocess

DIR = os.path.join('C:\\', 'Users', 'Sergey', 'Desktop', 'helloword.py')

subprocess.call(['python', DIR])

4

execFile('helloworld.py')wykonuje pracę za mnie. Należy zwrócić uwagę, aby wprowadzić pełną nazwę katalogu pliku .py, jeśli nie ma go w samym folderze Pythona (przynajmniej w przypadku systemu Windows)

Na przykład, execFile('C:/helloworld.py')


4

NAJPROSTSZY SPOSÓB

python -i helloworld.py  #Python 2

python3 -i helloworld.py #Python 3

2

Na przykład:

import subprocess

subprocess.call("C:\helloworld.py")

subprocess.call(["python", "-h"])

2
subprocess.call(r'c:\path\to\something.py')nie działa dla mnie. OSError: [WinError 193]% 1 nie jest poprawną aplikacją Win32
— Terry Jan Reedy

Spróbuj tego importu os import subprocess DIR = os.path.join ('C: \\', 'Users', 'Sergey', 'Desktop', 'a.py') subprocess.call (['python', DIR] )
— Sergey Nosov

1

W Pythonie 3 nie ma execFile. Można skorzystać execz funkcji wbudowanej, na przykład:

import helloworld
exec('helloworld')

1

W IDLE działa: -

import helloworld

Nie wiem zbyt wiele o tym, dlaczego to działa, ale działa ...


to, co robisz, to ładowanie modułu, który nie jest uruchomiony z powłoki. jedna różnica między dwoma to: 1) Ładowanie modułu nazwa modułu nazwa __ = nazwa pliku 2) uruchamianie z poziomu nazwy modułu powłoki _name __ = " _main "
— tanweer alam

Uruchamianie programów nie jest dobrym sposobem, ponieważ faktycznie je importujesz, a nie uruchamiasz. Jego zawartość zostanie zaimportowana i będzie bez znaczenia, jeśli nie chcesz ich używać.
— Abhijeet.py

1

Aby uruchomić skrypt Pythona w powłoce Pythona, takiej jak Idle lub w powłoce Django, możesz wykonać następujące czynności za pomocą funkcji exec (). Funkcja Exec () wykonuje argument obiektu kodu. Obiekt kodu w Pythonie to po prostu skompilowany kod w Pythonie. Musisz więc najpierw skompilować plik skryptu, a następnie wykonać go za pomocą exec (). Z Twojej powłoki:

>>>file_to_compile = open('/path/to/your/file.py').read()
>>>code_object = compile(file_to_compile, '<string>', 'exec')
>>>exec(code_object)

Używam Pythona 3.4. Zobacz kompilacji i exec dokumenty w celu uzyskania szczegółowych informacji.


1

Przetestowałem to i to trochę działa:

exec(open('filename').read())  # Don't forget to put the filename between ' '

dzięki za wskazówkę do wyceny, to zadziałało dla mnie. Głosowano za.
— Forever Learner

1

możesz to zrobić na dwa sposoby

  • import file_name

  • exec(open('file_name').read())

ale upewnij się, że plik powinien być przechowywany tam, gdzie działa twój program


0

W środowisku Windows można uruchomić plik py w wierszu poleceń powłoki Python3 z następującą składnią:

exec (open ('bezwzględna ścieżka do nazwa_pliku'). read ())

Poniżej wyjaśniono, jak wykonać prosty plik helloworld.py z wiersza poleceń powłoki Pythona

Lokalizacja pliku: C: /Users/testuser/testfolder/helloworld.py

Zawartość pliku: print ("witaj świecie")

Możemy uruchomić ten plik na powłoce Python3.7 jak poniżej:

>>> import os
>>> abs_path = 'C://Users/testuser/testfolder'
>>> os.chdir(abs_path)
>>> os.getcwd()
'C:\\Users\\testuser\\testfolder'

>>> exec(open("helloworld.py").read())
hello world

>>> exec(open("C:\\Users\\testuser\\testfolder\\helloworld.py").read())
hello world

>>> os.path.abspath("helloworld.py")
'C:\\Users\\testuser\\testfolder\\helloworld.py'
>>> import helloworld
hello world

importowanie programu w celu jego uruchomienia nie jest dobrą opcją. Nawet ja używałem go na początku, ale teraz wiem o potencjalnych problemach, takich jak odbieranie wydajności twojego programu, ponieważ go importujesz (choć nieistotne).
— Abhijeet.py

0

Jest jeszcze jedna alternatywa (dla Windows) -

    import os
    os.system('py "<path of program with extension>"')

0

W konsoli Pythona można wypróbować dwa sposoby.

w tym samym katalogu roboczym,

1. >> import helloworld

# jeśli masz zmienną x , możesz wydrukować ją w IDLE.

>> helloworld.x

# jeśli masz funkcję func , możesz ją również nazwać w ten sposób.

>> helloworld.func ()

2. >> plik runfile ("./ helloworld.py")

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.