pythontidak berfungsi jika Anda menjalankan python 3, python3digunakan sebagai gantinya.
pzkpfw
41
Execfile tidak lagi ada di python3, dan exec () tampaknya tidak berfungsi entah bagaimana ... tidak yakin apa yang saya lakukan salah. dapatkah Anda memperbarui jawabannya?
temporary_user_name
apakah ada cara untuk menyediakan stdindari file seperti menggunakan <ke skrip pelaksana di execfile().? @ s-lott
bhanu
9
@pzkpfw python dapat menunjuk ke versi python apa pun. Saya telah melihat lingkungan dengan hanya python v3 di mana pythonmenunjuk ke python3.
StockB
2
@ pzkpfw Itu tergantung pada apa yang pythondapat dieksekusi yang ditemukan sistem ketika melihat melalui folder dalam variabel lingkungan PATH.
Ini akan menjalankan skrip dan meletakkan semua variabel globalnya dalam lingkup global juru bahasa (perilaku normal di sebagian besar lingkungan skrip).
Kamu adalah pahlawanku! Saya telah berkelahi dengan beberapa hal yang sangat aneh selama berhari-hari ketika os.getcwd () mengatakan satu hal, tetapi glob ("*") bekerja di direktori lain ... Terima kasih! Terima kasih!
pallevillesen
Apakah ada cara untuk mengirimkan parameter ke skrip? berikut ini tidak berfungsi: exec (buka "setup.py install"). read (), global ())
ben
1
@ Ben yang tidak akan berfungsi karena openlangsung membaca kode dari skrip. Untuk memberikan argumen, lihat jawaban ini , tetapi alih-alih execfile, jelas gunakan execdan openseperti yang ditunjukkan di atas.
Nico
47
Terkejut saya belum melihat ini. Anda dapat mengeksekusi file dan kemudian membiarkan penerjemah terbuka setelah eksekusi berakhir menggunakan -iopsi:
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.
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.
Jawaban:
Beberapa cara.
Dari cangkang
Dari dalam IDLE, tekan F5 .
Jika Anda mengetik secara interaktif, coba ini: ( hanya Python 2 !)
Untuk Python3 , gunakan:
sumber
python
tidak berfungsi jika Anda menjalankan python 3,python3
digunakan sebagai gantinya.stdin
dari file seperti menggunakan<
ke skrip pelaksana diexecfile()
.? @ s-lottpython
menunjuk kepython3
.python
dapat dieksekusi yang ditemukan sistem ketika melihat melalui folder dalam variabel lingkunganPATH
.Untuk Python 2:
Untuk Python 3:
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.
sumber
Python 2 + Python 3
Ini akan menjalankan skrip dan meletakkan semua variabel globalnya dalam lingkup global juru bahasa (perilaku normal di sebagian besar lingkungan skrip).
exec
Dokumentasi Python 3sumber
open
langsung membaca kode dari skrip. Untuk memberikan argumen, lihat jawaban ini , tetapi alih-alihexecfile
, jelas gunakanexec
danopen
seperti yang ditunjukkan di atas.Terkejut saya belum melihat ini. Anda dapat mengeksekusi file dan kemudian membiarkan penerjemah terbuka setelah eksekusi berakhir menggunakan
-i
opsi:sumber
Yah, cukup mengimpor file dengan
import filename
(minus .py, perlu berada di direktori yang sama atau di AndaPYTHONPATH
) akan menjalankan file, membuat variabel, fungsi, kelas, dll tersedia difilename.variable
namespace.Jadi jika Anda memiliki
cheddar.py
variabel spam dan telur fungsi - Anda dapat mengimpornyaimport cheddar
, mengakses variabel dengancheddar.spam
dan menjalankan fungsinya dengan memanggilcheddar.eggs()
Jika Anda memiliki kode di
cheddar.py
luar 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.sumber
from filename import *
Dari pandangan saya, cara terbaik adalah:
dan setelah memodifikasi file Anda.py
atau
tetapi ini akan membuat fungsi dan kelas terlihat seperti itu: yourfile.function1, yourfile.class1 .....
Jika Anda tidak dapat menerimanya, solusi akhirnya adalah:
sumber
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.
sumber
Kerjakan saja,
Pastikan untuk tidak menambahkan ekstensi .py. Jika file .py Anda digunakan dalam subdirektori,
sumber
Untuk penggunaan python3 baik dengan
xxxx = name
dariyourfile
.sumber
Untuk Python 3:
Pastikan Anda berada di direktori yang benar sebelum menjalankan perintah.
Untuk menjalankan file dari direktori lain, Anda dapat menggunakan perintah di bawah ini:
sumber
Andaikata Anda menginginkan fitur-fitur berikut:
__name__ == '__main__'
Benar sehingga skrip berperilaku dengan benar sebagai skrip.Fitur
exec(open('foo.py').read())
gagal 1import foo
Strategi gagal fitur 2Untuk mendapatkan keduanya, Anda memerlukan ini:
sumber