Làm cách nào để chạy tập lệnh python từ bên trong trình bao tương tác IDLE?
Sau đây là một lỗi:
>>> python helloworld.py
SyntaxError: invalid syntax
python helloworld.py
vào một cửa sổ IDLE shell và điều đó không hoạt động.
Làm cách nào để chạy tập lệnh python từ bên trong trình bao tương tác IDLE?
Sau đây là một lỗi:
>>> python helloworld.py
SyntaxError: invalid syntax
python helloworld.py
vào một cửa sổ IDLE shell và điều đó không hoạt động.
Câu trả lời:
Python3 :
exec(open('helloworld.py').read())
Nếu tệp của bạn không ở cùng một địa chỉ:
exec(open('./app/filename.py').read())
Xem https://stackoverflow.com/a/437857/739577 để chuyển các biến cục bộ / toàn cục.
Trong các phiên bản Python không dùng nữa
Python2 Built-in chức năng: execfile
execfile('helloworld.py')
Nó thường không thể được gọi với các đối số. Nhưng đây là một cách giải quyết:
import sys
sys.argv = ['helloworld.py', 'arg'] # argv[0] should still be the script name
execfile('helloworld.py')
Không được dùng nữa kể từ ngày 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
Với các đối số:
os.popen('python helloworld.py arg').read()
Sử dụng trước: quy trình phụ
import subprocess
subprocess.call(['python', 'helloworld.py']) # Just run the program
subprocess.check_output(['python', 'helloworld.py']) # Also gets you the stdout
Với các đối số:
subprocess.call(['python', 'helloworld.py', 'arg'])
Đọc tài liệu để biết chi tiết :-)
Đã kiểm tra với điều cơ bản này helloworld.py
:
import sys
if len(sys.argv) > 1:
print(sys.argv[1])
exec
cho Python3
Cửa sổ trình bao IDLE không giống với trình bao đầu cuối (ví dụ: đang chạy sh
hoặc bash
). Đúng hơn, nó giống như ở trong trình thông dịch tương tác Python ( python -i
). Cách dễ nhất để chạy tập lệnh trong IDLE là sử dụng Open
lệnh từ File
menu (điều này có thể thay đổi một chút tùy thuộc vào nền tảng bạn đang chạy) để tải tệp tập lệnh của bạn vào cửa sổ trình chỉnh sửa IDLE và sau đó sử dụng lệnh Run
-> Run Module
(phím tắt F5).
sys.argv
ngay từ đầu chương trình, chẳng hạn như trong bảng if __name__ == "__main__"
soạn sẵn thông thường .
Run
-> Run with Customized...
(phím tắt Shift + F5) và một cửa sổ bật lên sẽ mở ra nơi bạn có thể cung cấp các đối số của mình. Rất tiếc, hiện tại nó không nhớ chúng nên bạn sẽ dán chúng sau mỗi lần chạy.
Thử cái này
import os
import subprocess
DIR = os.path.join('C:\\', 'Users', 'Sergey', 'Desktop', 'helloword.py')
subprocess.call(['python', DIR])
execFile('helloworld.py')
làm công việc cho tôi. Một điều cần lưu ý là nhập tên thư mục đầy đủ của tệp .py nếu nó không nằm trong chính thư mục Python (ít nhất đây là trường hợp trên Windows)
Ví dụ, execFile('C:/helloworld.py')
Ví dụ:
import subprocess
subprocess.call("C:\helloworld.py")
subprocess.call(["python", "-h"])
subprocess.call(r'c:\path\to\something.py')
không làm việc cho tôi. OSError: [WinError 193]% 1 không phải là một ứng dụng Win32 hợp lệ
Trong IDLE, các hoạt động sau: -
import helloworld
Tôi không biết nhiều về lý do tại sao nó hoạt động, nhưng nó có ..
Để chạy một tập lệnh python trong một trình bao python chẳng hạn như Idle hoặc trong một trình bao Django, bạn có thể thực hiện như sau bằng cách sử dụng hàm execute (). Exec () thực thi một đối số đối tượng mã. Một đối tượng mã trong Python chỉ đơn giản là mã Python được biên dịch. Vì vậy, trước tiên bạn phải biên dịch tệp script của mình và sau đó thực thi nó bằng cách sử dụng execute (). Từ vỏ của bạn:
>>>file_to_compile = open('/path/to/your/file.py').read() >>>code_object = compile(file_to_compile, '<string>', 'exec') >>>exec(code_object)
Tôi đang sử dụng Python 3.4. Xem biên dịch và exec tài liệu để biết chi tiết.
Tôi đã thử nghiệm điều này và nó gần như hoạt động:
exec(open('filename').read()) # Don't forget to put the filename between ' '
Trên môi trường Windows, bạn có thể thực thi tệp py trên dòng lệnh Python3 shell với cú pháp sau:
execute (open ('đường dẫn tuyệt đối đến tên_tệp'). read ())
Dưới đây giải thích cách thực thi một tệp helloworld.py đơn giản từ dòng lệnh python shell
Vị trí tệp: C: /Users/testuser/testfolder/helloworld.py
Nội dung tệp: print ("hello world")
Chúng tôi có thể thực thi tệp này trên Python3.7 Shell như sau:
>>> 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
Có một giải pháp thay thế khác (dành cho windows) -
import os
os.system('py "<path of program with extension>"')
Trong bảng điều khiển python, người ta có thể thử 2 cách sau.
trong cùng một thư mục công việc,
1. >> nhập helloworld
# nếu bạn có một biến x , bạn có thể in nó trong IDLE.
>> helloworld.x
# nếu bạn có một hàm func , bạn cũng có thể gọi nó như thế này.
>> helloworld.func ()
2. >> runfile ("./ helloworld.py")
helloworld.py
cái nhìn như thế nào?