IDLE etkileşimli kabuğundan bir python komut dosyasını nasıl çalıştırırım?
Aşağıdakiler bir hata verir:
>>> python helloworld.py
SyntaxError: invalid syntax
IDLE etkileşimli kabuğundan bir python komut dosyasını nasıl çalıştırırım?
Aşağıdakiler bir hata verir:
>>> python helloworld.py
SyntaxError: invalid syntax
python helloworld.py
bir IDLE kabuk penceresinde yazıyor ve bu işe yaramıyor.
Yanıtlar:
Python3 :
exec(open('helloworld.py').read())
Dosyanız aynı dizinde değilse:
exec(open('./app/filename.py').read())
Global / yerel değişkenleri geçirmek için https://stackoverflow.com/a/437857/739577 adresine bakın .
Kullanımdan kaldırılmış Python sürümlerinde
Python2 Yerleşik işlevi: execfile
execfile('helloworld.py')
Normalde bağımsız değişkenlerle çağrılamaz. Ama işte bir çözüm:
import sys
sys.argv = ['helloworld.py', 'arg'] # argv[0] should still be the script name
execfile('helloworld.py')
2.6'dan beri kullanımdan kaldırıldı: popen
import os
os.popen('python helloworld.py') # Just run the program
os.popen('python helloworld.py').read() # Also gets you the stdout
Bağımsız değişkenlerle:
os.popen('python helloworld.py arg').read()
Gelişmiş kullanım: alt süreç
import subprocess
subprocess.call(['python', 'helloworld.py']) # Just run the program
subprocess.check_output(['python', 'helloworld.py']) # Also gets you the stdout
Bağımsız değişkenlerle:
subprocess.call(['python', 'helloworld.py', 'arg'])
Ayrıntılar için belgeleri okuyun :-)
Bu temel ile test edildi helloworld.py
:
import sys
if len(sys.argv) > 1:
print(sys.argv[1])
exec
Python3 için
IDLE kabuk penceresi bir terminal kabuğuyla aynı değildir (örn. Çalışan sh
veya bash
). Daha ziyade, tıpkı Python etkileşimli yorumlayıcısında ( python -i
) olmak gibidir. IDLE'de bir komut dosyası çalıştırmanın en kolay yolu , komut dosyanızı bir IDLE düzenleyici penceresine yüklemek için menüden Open
komutu kullanmaktır File
(bu, çalıştırdığınız platforma bağlı olarak biraz değişebilir) ve ardından Run
-> Run Module
komutunu (kısayol F5).
sys.argv
, programın en başında, örneğin normal standart if __name__ == "__main__"
şablon altında manuel olarak başlatmaktır .
Run
-> Run with Customized...
komutunu (kısayol Shift + F5) kullanın ve argümanlarınızı sağlayabileceğiniz bir açılır pencere açılacaktır. Maalesef şu anda onları hatırlamıyor, bu yüzden onları her çalıştırmada yapıştıracaksınız.
Bunu dene
import os
import subprocess
DIR = os.path.join('C:\\', 'Users', 'Sergey', 'Desktop', 'helloword.py')
subprocess.call(['python', DIR])
execFile('helloworld.py')
işi benim için yapıyor. Dikkat edilmesi gereken bir nokta, Python klasörünün kendisinde değilse .py dosyasının tam dizin adını girmektir (en azından Windows'ta durum böyledir)
Örneğin, execFile('C:/helloworld.py')
Örneğin:
import subprocess
subprocess.call("C:\helloworld.py")
subprocess.call(["python", "-h"])
subprocess.call(r'c:\path\to\something.py')
benim için çalışmıyor. OSError: [WinError 193]% 1 geçerli bir Win32 uygulaması değil
IDLE'de aşağıdakiler çalışır: -
import helloworld
Neden işe yaradığını bilmiyorum ama işe yarıyor ..
Idle gibi bir python kabuğunda veya bir Django kabuğunda bir python betiğini çalıştırmak için exec () işlevini kullanarak aşağıdakileri yapabilirsiniz. Exec (), bir kod nesnesi bağımsız değişkenini yürütür. Python'daki bir kod nesnesi, basitçe derlenmiş Python kodudur. Bu nedenle, önce betik dosyanızı derlemeniz ve ardından exec () kullanarak çalıştırmanız gerekir. Kabuğunuzdan:
>>>file_to_compile = open('/path/to/your/file.py').read() >>>code_object = compile(file_to_compile, '<string>', 'exec') >>>exec(code_object)
Python 3.4 kullanıyorum. Bakın derleme ve yürütme belgelerine bakın.
Bunu test ettim ve işe yarıyor:
exec(open('filename').read()) # Don't forget to put the filename between ' '
Windows ortamında, py dosyasını Python3 kabuk komut satırında aşağıdaki sözdizimi ile çalıştırabilirsiniz:
exec (open ('dosya_adı için mutlak yol'). read ())
Aşağıda python kabuk komut satırından basit bir helloworld.py dosyasının nasıl çalıştırılacağı açıklanmaktadır
Dosya Konumu: C: /Users/testuser/testfolder/helloworld.py
Dosya İçeriği: yazdır ("merhaba dünya")
Bu dosyayı Python3.7 Shell üzerinde aşağıdaki gibi çalıştırabiliriz:
>>> 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
Bir alternatif daha var (Windows için) -
import os
os.system('py "<path of program with extension>"')
Bir python konsolunda, aşağıdaki 2 yolu deneyebilirsiniz.
aynı çalışma dizini altında,
1. >> helloworld'ü içe aktar
# değişken x'iniz varsa varsa, IDLE'da yazdırabilirsiniz.
>> helloworld.x
# Eğer bir fonksiyon varsa fonk , bunu şu şekilde de çağırabilirsiniz.
>> helloworld.func ()
2. >> runfile ("./ helloworld.py")
helloworld.py
benziyor?