Como executo um script Python de dentro do shell interativo IDLE?
O seguinte gera um erro:
>>> python helloworld.py
SyntaxError: invalid syntax
python helloworld.py
em uma janela de shell IDLE e isso não funciona.
Como executo um script Python de dentro do shell interativo IDLE?
O seguinte gera um erro:
>>> python helloworld.py
SyntaxError: invalid syntax
python helloworld.py
em uma janela de shell IDLE e isso não funciona.
Respostas:
Python3 :
exec(open('helloworld.py').read())
Se o seu arquivo não estiver no mesmo diretório:
exec(open('./app/filename.py').read())
Consulte https://stackoverflow.com/a/437857/739577 para passar variáveis globais / locais.
Em versões obsoletas do Python
Função integrada do Python2 : execfile
execfile('helloworld.py')
Normalmente não pode ser chamado com argumentos. Mas aqui está uma solução alternativa:
import sys
sys.argv = ['helloworld.py', 'arg'] # argv[0] should still be the script name
execfile('helloworld.py')
import os
os.popen('python helloworld.py') # Just run the program
os.popen('python helloworld.py').read() # Also gets you the stdout
Com argumentos:
os.popen('python helloworld.py arg').read()
Uso avançado: subprocesso
import subprocess
subprocess.call(['python', 'helloworld.py']) # Just run the program
subprocess.check_output(['python', 'helloworld.py']) # Also gets you the stdout
Com argumentos:
subprocess.call(['python', 'helloworld.py', 'arg'])
Leia os documentos para obter detalhes :-)
Testado com este básico helloworld.py
:
import sys
if len(sys.argv) > 1:
print(sys.argv[1])
exec
para Python3
A janela do shell IDLE não é o mesmo que um shell de terminal (por exemplo, executando sh
ou bash
). Em vez disso, é como estar no interpretador interativo Python ( python -i
). A maneira mais fácil de executar um script no IDLE é usar o Open
comando do File
menu (pode variar um pouco dependendo da plataforma que você está executando) para carregar seu arquivo de script em uma janela do editor IDLE e então usar o comando Run
-> Run Module
(atalho F5).
sys.argv
no início do programa, por exemplo, sob o if __name__ == "__main__"
boilerplate usual .
Run
-> Run with Customized...
(atalho Shift + F5) e um pop-up será aberto onde você pode fornecer seus argumentos. Infelizmente, ele não se lembra deles atualmente, então você os colará a cada execução.
Tente isto
import os
import subprocess
DIR = os.path.join('C:\\', 'Users', 'Sergey', 'Desktop', 'helloword.py')
subprocess.call(['python', DIR])
execFile('helloworld.py')
faz o trabalho para mim. Uma coisa a ser observada é inserir o nome completo do diretório do arquivo .py se ele não estiver na própria pasta Python (pelo menos é o caso do Windows)
Por exemplo, execFile('C:/helloworld.py')
Por exemplo:
import subprocess
subprocess.call("C:\helloworld.py")
subprocess.call(["python", "-h"])
subprocess.call(r'c:\path\to\something.py')
Nao funciona para mim. OSError: [WinError 193]% 1 não é um aplicativo Win32 válido
No IDLE, funciona o seguinte: -
import helloworld
Não sei muito sobre por que funciona, mas funciona ..
Para executar um script python em um shell python como Idle ou em um shell Django, você pode fazer o seguinte usando a função exec (). Exec () executa um argumento de objeto de código. Um objeto de código em Python é simplesmente código Python compilado. Portanto, você deve primeiro compilar seu arquivo de script e, em seguida, executá-lo usando exec (). Da sua concha:
>>>file_to_compile = open('/path/to/your/file.py').read() >>>code_object = compile(file_to_compile, '<string>', 'exec') >>>exec(code_object)
Estou usando o Python 3.4. Veja os documentos de compilação e exec para informações detalhadas.
Eu testei isso e meio que funcionou:
exec(open('filename').read()) # Don't forget to put the filename between ' '
No ambiente Windows, você pode executar o arquivo py na linha de comando do shell Python3 com a seguinte sintaxe:
exec (open ('caminho absoluto para file_name'). read ())
Abaixo, explica como executar um arquivo helloworld.py simples a partir da linha de comando do shell do python
Localização do arquivo: C: /Users/testuser/testfolder/helloworld.py
Conteúdo do arquivo: imprimir ("hello world")
Podemos executar este arquivo no Shell Python3.7 conforme abaixo:
>>> 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
Existe mais uma alternativa (para windows) -
import os
os.system('py "<path of program with extension>"')
Em um console Python, pode-se tentar as 2 maneiras a seguir.
sob o mesmo diretório de trabalho,
1 >> import helloworld
# se você tiver uma variável x , você pode imprimi-la no IDLE.
>> helloworld.x
# se você tiver uma função func , você também pode chamá-la assim.
>> helloworld.func ()
2. >> runfile ("./ helloworld.py")
helloworld.py
parece?