tra-loi-cau-hoi-phat-trien-web.com

Làm cách nào để chạy tập lệnh python từ shell tương tác IDLE?

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
78
user1703914

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])
106
Hugues Fontenelle

Bạn có thể sử dụng điều này trong python3:

exec(open(filename).read())
27
FacePalm

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). 

20
Ned Deily

Thử đi

import os
import subprocess

DIR = os.path.join('C:\\', 'Users', 'Sergey', 'Desktop', 'helloword.py')

subprocess.call(['python', DIR])
5
Sergey Nosov

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')

4
optimistic_kid

Ví dụ:

import subprocess

subprocess.call("C:\helloworld.py")

subprocess.call(["python", "-h"])
2
Sergey Nosov

CÁCH DỄ DÀNG NHẤT

python -i helloworld.py  #Python 2

python3 -i helloworld.py #Python 3
2
Leonard

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

1
ujjal das

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ó ..

1
Aditya Dixit

Để 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ịchexec docs để biết thông tin chi tiết.

1
y2knoproblem

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')
1
piogor

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 ' '
0
Remache Amine

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
0
vinsinraw