Saya mencoba mengeksekusi file dengan perintah python dari dalam interpreter.
EDIT: Saya mencoba menggunakan variabel dan pengaturan dari file itu, bukan untuk meminta proses yang terpisah.
Saya mencoba mengeksekusi file dengan perintah python dari dalam interpreter.
EDIT: Saya mencoba menggunakan variabel dan pengaturan dari file itu, bukan untuk meminta proses yang terpisah.
Jawaban:
Beberapa cara.
Dari cangkang
python someFile.py
Dari dalam IDLE, tekan F5 .
Jika Anda mengetik secara interaktif, coba ini: ( hanya Python 2 !)
>>> variables= {}
>>> execfile( "someFile.py", variables )
>>> print variables # globals from the someFile module
Untuk Python3 , gunakan:
>>> exec(open("filename.py").read())
pythontidak berfungsi jika Anda menjalankan python 3, python3digunakan sebagai gantinya.
stdindari file seperti menggunakan <ke skrip pelaksana di execfile().? @ s-lott
pythonmenunjuk ke python3.
pythondapat dieksekusi yang ditemukan sistem ketika melihat melalui folder dalam variabel lingkungan PATH.
Untuk Python 2:
>>> execfile('filename.py')
Untuk Python 3:
>>> exec(open("filename.py").read())
# or
>>> from pathlib import Path
>>> exec(Path("filename.py").read_text())
Lihat dokumentasi . Jika Anda menggunakan Python 3.0, lihat pertanyaan ini .
Lihat jawaban oleh @ S.Lott untuk contoh bagaimana Anda mengakses global dari filename.py setelah menjalankannya.
exec(open("./path/to/script.py").read(), globals())
Ini akan menjalankan skrip dan meletakkan semua variabel globalnya dalam lingkup global juru bahasa (perilaku normal di sebagian besar lingkungan skrip).
openlangsung membaca kode dari skrip. Untuk memberikan argumen, lihat jawaban ini , tetapi alih-alih execfile, jelas gunakan execdan openseperti yang ditunjukkan di atas.
Terkejut saya belum melihat ini. Anda dapat mengeksekusi file dan kemudian membiarkan penerjemah terbuka setelah eksekusi berakhir menggunakan -iopsi:
| foo.py |
----------
testvar = 10
def bar(bing):
return bing*3
--------
$ python -i foo.py
>>> testvar
10
>>> bar(6)
18
Saya mencoba menggunakan variabel dan pengaturan dari file itu, bukan untuk meminta proses yang terpisah.
Yah, cukup mengimpor file dengan import filename(minus .py, perlu berada di direktori yang sama atau di Anda PYTHONPATH) akan menjalankan file, membuat variabel, fungsi, kelas, dll tersedia di filename.variablenamespace.
Jadi jika Anda memiliki cheddar.pyvariabel spam dan telur fungsi - Anda dapat mengimpornya import cheddar, mengakses variabel dengan cheddar.spamdan menjalankan fungsinya dengan memanggilcheddar.eggs()
Jika Anda memiliki kode di cheddar.pyluar fungsi, kode itu akan segera dijalankan, tetapi membangun aplikasi yang menjalankan barang impor akan membuatnya sulit untuk menggunakan kembali kode Anda. Jika memungkinkan, letakkan semuanya di dalam fungsi atau kelas.
from filename import *
Dari pandangan saya, cara terbaik adalah:
import yourfile
dan setelah memodifikasi file Anda.py
reload(yourfile)
atau
import imp;
imp.reload(yourfile) in python3
tetapi ini akan membuat fungsi dan kelas terlihat seperti itu: yourfile.function1, yourfile.class1 .....
Jika Anda tidak dapat menerimanya, solusi akhirnya adalah:
reload(yourfile)
from yourfile import *
Saya bukan ahli tapi ini yang saya perhatikan:
jika kode Anda adalah mycode.py misalnya, dan Anda mengetik 'import mycode' saja, Python akan menjalankannya tetapi itu tidak akan membuat semua variabel Anda tersedia untuk penerjemah. Saya menemukan bahwa Anda harus mengetik sebenarnya 'dari impor kode saya *' jika Anda ingin membuat semua variabel tersedia untuk penerjemah.
Kerjakan saja,
from my_file import *
Pastikan untuk tidak menambahkan ekstensi .py. Jika file .py Anda digunakan dalam subdirektori,
from my_dir.my_file import *
Untuk Python 3:
>>> exec(open("helloworld.py").read())
Pastikan Anda berada di direktori yang benar sebelum menjalankan perintah.
Untuk menjalankan file dari direktori lain, Anda dapat menggunakan perintah di bawah ini:
with open ("C:\\Users\\UserName\\SomeFolder\\helloworld.py", "r") as file:
exec(file.read())
Andaikata Anda menginginkan fitur-fitur berikut:
__name__ == '__main__' Benar sehingga skrip berperilaku dengan benar sebagai skrip.Fitur exec(open('foo.py').read())gagal 1 import fooStrategi gagal fitur 2
Untuk mendapatkan keduanya, Anda memerlukan ini:
source = open(filename).read()
code = compile(source, filename, 'exec')
exec(code)