Làm cách nào để chạy tập lệnh python từ trong vỏ tương tác IDLE?
Sau đây ném một lỗi:
>>> python helloworld.py
SyntaxError: invalid syntax
Hàm tích hợp: 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 dùng nữa kể từ 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 con
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 :-)
Đã thử nghiệm với helloworld.py
cơ bản này:
import sys
if len(sys.argv) > 1:
print(sys.argv[1])
Bạn có thể sử dụng điều này trong python3:
exec(open(filename).read())
Cửa sổ IDLE Shell không giống với Shell thiết bị đầu cuối (ví dụ: đang chạy sh
hoặc bash
). Thay vào đó, nó giống như là 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 lệnh Open
từ menu File
(đ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ổ soạn thảo IDLE và sau đó sử dụng Run
-> Lệnh Run Module
(phím tắt F5).
Thử đi
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"])
CÁCH DỄ DÀNG NHẤT
python -i helloworld.py #Python 2
python3 -i helloworld.py #Python 3
bạn có thể làm điều đó bằng hai cách
import file_name
exec(open('file_name').read())
nhưng hãy chắc chắn rằng tệp đó sẽ được lưu ở nơi chương trình của bạn đang chạy
Trong IDLE, các công việc sau: -
import helloworld
Tôi không biết nhiều về lý do tại sao nó hoạt động, nhưng nó ..
Để chạy tập lệnh python trong Shell python như Idle hoặc Django Shell, bạn có thể thực hiện các thao tác sau bằng cách sử dụng hàm exec (). Exec () thực thi một đối số mã. Một đối tượng mã trong Python được biên dịch mã Python đơn giản. 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 exec (). Từ Shell 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 docs để biết thông tin chi tiết.
Trong Python 3, không có execFile
. Chẳng hạn, người ta có thể sử dụng exec
hàm tích hợp:
import helloworld
exec('helloworld')
Tôi đã thử nghiệm điều này và nó khá hiệu quả:
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:
exec (open ('đường dẫn tuyệt đối đến file_name'). read ())
Dưới đây giải thích cách thực hiện 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: in ("xin chào thế giới")
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