Bagaimana cara menjalankan skrip python dari shell interaktif IDLE?

102

Bagaimana cara menjalankan skrip python dari dalam shell interaktif IDLE?

Kesalahan berikut melontarkan:

>>> python helloworld.py
SyntaxError: invalid syntax
tshepang
sumber
Apa helloworld.pyterlihat seperti?
TerryA
ya itu berarti ada yang salah dengan kode Anda, kirimkan kode Anda!
Serial
12
Tidak, belum tentu. Kemungkinan OP sedang mengetik python helloworld.pydi jendela shell IDLE dan itu tidak berfungsi.
Ned Deily
Juga tidak akan berhasil dalam penerjemah standar. Masalah ini telah muncul sebelumnya di mana orang secara keliru mengira bahwa interpreter prompt adalah prompt baris perintah.
Terry Jan Reedy
Anda harus menerima jawaban dari Ned Deily jika itu menjawab pertanyaan Anda dengan benar. Ini juga akan membantu sesama pengembang untuk menemukan jawaban yang benar dengan cepat.
Krishna Oza

Jawaban:

141

Python3 :

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

Jika file Anda tidak di direktori yang sama:

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

Lihat https://stackoverflow.com/a/437857/739577 untuk meneruskan variabel global / lokal.


Dalam versi Python yang tidak digunakan lagi

Python2 Built-in fungsi: execfile

execfile('helloworld.py')

Biasanya tidak dapat dipanggil dengan argumen. Tapi inilah solusinya:

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

Tidak digunakan lagi sejak 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

Dengan argumen:

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

Penggunaan lanjutan : subproses

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

Dengan argumen:

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

Baca dokumen untuk detailnya :-)


Diuji dengan dasar ini helloworld.py:

import sys
if len(sys.argv) > 1:
    print(sys.argv[1])
Hugues Fontenelle
sumber
2
Bisakah Anda menambahkan contoh dengan argumen baris perintah juga.
ViFI
1
Tidak bekerja dengan Python3 dan penanya tidak menentukan versi Python secara eksplisit
Suncatcher
Ditambahkan execuntuk Python3
Hugues Fontenelle
35

Anda dapat menggunakan ini di python3:

exec(open(filename).read())
Telapak tangan
sumber
24

Jendela shell IDLE tidak sama dengan shell terminal (mis. Menjalankan shatau bash). Sebaliknya, ini seperti berada di interpreter interaktif Python ( python -i). Cara termudah untuk menjalankan skrip di IDLE adalah dengan menggunakan Openperintah dari Filemenu (ini mungkin sedikit berbeda tergantung pada platform mana yang Anda jalankan) untuk memuat file skrip Anda ke jendela editor IDLE dan kemudian gunakan Run-> Run Moduleperintah (pintasan F5).

Ned Deily
sumber
1
Tetapi Anda tidak bisa menyampaikan argumen. :(
Erica Kane
3
Sayangnya, tidak, tidak mudah menjalankan file Python dalam IDLE sambil meneruskan argumen baris perintah. Ada masalah terbuka yang sudah berlangsung lama bagi IDLE untuk melakukannya ( bugs.python.org/issue5680 ). Salah satu solusi untuk pengujian adalah dengan menginisialisasi secara manual sys.argvdi awal program, misalnya, di bawah if __name__ == "__main__"boilerplate biasa .
Ned Deily
Jawaban ini menjelaskan mengapa kita tidak bisa menjalankan script python menggunakan shell IDLE. Terima kasih @NedDeily
arsho
1
Mulai IDLE 3.7.4, Anda sekarang dapat menjalankan modul dengan argumen. Gunakan perintah baru Run-> Run with Customized...(pintasan Shift + F5) dan popup akan terbuka di mana Anda dapat memberikan argumen Anda. Sayangnya itu tidak mengingat mereka saat ini sehingga Anda akan menempelkannya di setiap proses.
Dan Nolan
6

Coba ini

import os
import subprocess

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

subprocess.call(['python', DIR])
Sergey Nosov
sumber
4

execFile('helloworld.py')melakukan pekerjaan untuk saya. Hal yang perlu diperhatikan adalah memasukkan nama direktori lengkap dari file .py jika tidak ada di folder Python itu sendiri (setidaknya ini terjadi di Windows)

Sebagai contoh, execFile('C:/helloworld.py')

optimistic_kid
sumber
4

CARA TERMUDAH

python -i helloworld.py  #Python 2

python3 -i helloworld.py #Python 3
Leonard
sumber
2

Sebagai contoh:

import subprocess

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

subprocess.call(["python", "-h"])
Sergey Nosov
sumber
2
subprocess.call(r'c:\path\to\something.py')tidak bekerja untuk saya. OSError: [WinError 193]% 1 bukan aplikasi Win32 yang valid
Terry Jan Reedy
Coba impor ini os import subprocess DIR = os.path.join ('C: \\', 'Users', 'Sergey', 'Desktop', 'a.py') subprocess.call (['python', DIR] )
Sergey Nosov
1

Di Python 3, tidak ada execFile. Seseorang dapat menggunakan execfungsi built-in, misalnya:

import helloworld
exec('helloworld')
piogor
sumber
1

Di IDLE, pekerjaan berikut: -

import helloworld

Saya tidak tahu banyak tentang mengapa itu berhasil, tapi itu ..

Aditya Dixit
sumber
apa yang Anda lakukan adalah memuat modul yang tidak berjalan dari shell. satu perbedaan antara keduanya adalah: 1) Memuat modul nama modul Anda __ = nama file 2) dijalankan dari nama modul shell _name __ = " _main "
tanweer alam
Ini bukan cara yang baik untuk menjalankan program karena Anda sebenarnya sedang mengimpor dan tidak menjalankannya. Isinya akan diimpor dan tidak ada artinya jika Anda tidak ingin memanfaatkannya.
Abhijeet.py
1

Untuk menjalankan skrip python dalam shell python seperti Idle atau dalam shell Django Anda dapat melakukan hal berikut menggunakan fungsi exec (). Exec () mengeksekusi argumen objek kode. Objek kode dalam Python adalah kode Python yang dikompilasi. Jadi, Anda harus terlebih dahulu mengkompilasi file skrip Anda dan kemudian menjalankannya menggunakan exec (). Dari cangkang Anda:

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

Saya menggunakan Python 3.4. Lihat dokumen kompilasi dan eksekutif untuk info lebih lanjut.

y2knoproblem
sumber
1

Saya menguji ini dan itu berhasil:

exec(open('filename').read())  # Don't forget to put the filename between ' '
Remache Amine
sumber
terima kasih atas tip kutipannya, ini berhasil untuk saya. Suara positif.
Forever Learner
1

Anda bisa melakukannya dengan dua cara

  • import file_name

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

tapi pastikan file tersebut harus disimpan di tempat program Anda berjalan

ujjal das
sumber
0

Di lingkungan Windows, Anda dapat mengeksekusi file py pada baris perintah shell Python3 dengan sintaks berikut:

exec (open ('path absolut ke nama_file'). read ())

Di bawah ini menjelaskan cara menjalankan file helloworld.py sederhana dari baris perintah shell python

Lokasi File: C: /Users/testuser/testfolder/helloworld.py

Isi File: print ("hello world")

Kami dapat menjalankan file ini di Python3.7 Shell seperti di bawah ini:

>>> 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
vinsinraw
sumber
mengimpor program untuk menjalankannya bukanlah pilihan yang baik. Meskipun saya menggunakannya pada awalnya tetapi sekarang saya tahu tentang masalah potensial seperti itu menghilangkan efisiensi program Anda karena Anda mengimpornya (meskipun dapat diabaikan).
Abhijeet.py
0

Ada satu alternatif lagi (untuk windows) -

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

Di konsol python, seseorang dapat mencoba 2 cara berikut.

di bawah direktori kerja yang sama,

1. >> impor helloworld

# jika Anda memiliki variabel x , Anda dapat mencetaknya di IDLE.

>> helloworld.x

# jika Anda memiliki fungsi func , Anda juga dapat memanggilnya seperti ini.

>> helloworld.func ()

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

LynnSunshine
sumber