ฉันจะเรียกใช้สคริปต์ python จากภายในเชลล์โต้ตอบ IDLE ได้อย่างไร
สิ่งต่อไปนี้ทำให้เกิดข้อผิดพลาด:
>>> python helloworld.py
SyntaxError: invalid syntax
ฉันจะเรียกใช้สคริปต์ python จากภายในเชลล์โต้ตอบ IDLE ได้อย่างไร
สิ่งต่อไปนี้ทำให้เกิดข้อผิดพลาด:
>>> python helloworld.py
SyntaxError: invalid syntax
python helloworld.py
ในหน้าต่าง IDLE เชลล์และไม่ได้ผล
คำตอบ:
Python3 :
exec(open('helloworld.py').read())
หากไฟล์ของคุณไม่ได้อยู่ใน dir เดียวกัน:
exec(open('./app/filename.py').read())
ดูhttps://stackoverflow.com/a/437857/739577สำหรับการส่งผ่านตัวแปร global / local
ในเวอร์ชัน Python ที่เลิกใช้แล้ว
Python2 ฟังก์ชันในตัว: execfile
execfile('helloworld.py')
โดยปกติไม่สามารถเรียกด้วยข้อโต้แย้งได้ แต่นี่เป็นวิธีแก้ปัญหา:
import sys
sys.argv = ['helloworld.py', 'arg'] # argv[0] should still be the script name
execfile('helloworld.py')
เลิกใช้งานตั้งแต่ 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
ด้วยข้อโต้แย้ง:
os.popen('python helloworld.py arg').read()
การใช้งานขั้นสูง: กระบวนการย่อย
import subprocess
subprocess.call(['python', 'helloworld.py']) # Just run the program
subprocess.check_output(['python', 'helloworld.py']) # Also gets you the stdout
ด้วยข้อโต้แย้ง:
subprocess.call(['python', 'helloworld.py', 'arg'])
อ่านเอกสารเพื่อดูรายละเอียด :-)
ทดสอบด้วยพื้นฐานนี้helloworld.py
:
import sys
if len(sys.argv) > 1:
print(sys.argv[1])
exec
สำหรับ Python3
คุณสามารถใช้สิ่งนี้ใน python3:
exec(open(filename).read())
หน้าต่าง IDLE เชลล์ไม่เหมือนกับเทอร์มินัลเชลล์ (เช่นรันsh
หรือbash
) แต่มันก็เหมือนกับการอยู่ในล่ามโต้ตอบ Python ( python -i
) วิธีที่ง่ายที่สุดในการเรียกใช้สคริปต์ใน IDLE คือการใช้Open
คำสั่งจากFile
เมนู (ซึ่งอาจแตกต่างกันเล็กน้อยขึ้นอยู่กับแพลตฟอร์มที่คุณใช้งาน) เพื่อโหลดไฟล์สคริปต์ของคุณลงในหน้าต่างตัวแก้ไข IDLE จากนั้นใช้คำสั่งRun
-> Run Module
(ทางลัด F5)
sys.argv
ที่จุดเริ่มต้นของโปรแกรมตัวอย่างเช่นภายใต้มาตรฐานif __name__ == "__main__"
สำเร็จรูป
Run
-> ใหม่Run with Customized...
(ทางลัด Shift + F5) และป๊อปอัปจะเปิดขึ้นเพื่อให้คุณสามารถจัดหาอาร์กิวเมนต์ของคุณได้ น่าเสียดายที่ตอนนี้จำไม่ได้แล้วดังนั้นคุณจะวางมันทุกครั้งที่วิ่ง
ลองทำตามนี้
import os
import subprocess
DIR = os.path.join('C:\\', 'Users', 'Sergey', 'Desktop', 'helloword.py')
subprocess.call(['python', DIR])
execFile('helloworld.py')
ทำงานให้ฉัน สิ่งที่ควรทราบคือการป้อนชื่อไดเร็กทอรีที่สมบูรณ์ของไฟล์. py หากไม่ได้อยู่ในโฟลเดอร์ Python (อย่างน้อยกรณีนี้ใน Windows)
ตัวอย่างเช่น, execFile('C:/helloworld.py')
วิธีที่ง่ายที่สุด
python -i helloworld.py #Python 2
python3 -i helloworld.py #Python 3
ตัวอย่างเช่น:
import subprocess
subprocess.call("C:\helloworld.py")
subprocess.call(["python", "-h"])
subprocess.call(r'c:\path\to\something.py')
ไม่ได้ผลสำหรับฉัน OSError: [WinError 193]% 1 ไม่ใช่แอปพลิเคชัน Win32 ที่ถูกต้อง
ใน Python 3 ไม่มีexecFile
. สามารถใช้exec
ฟังก์ชันในตัวได้เช่น:
import helloworld
exec('helloworld')
ใน IDLE การทำงานดังต่อไปนี้: -
import helloworld
ฉันไม่รู้มากว่าทำไมมันถึงได้ผล แต่มัน ..
ในการรันสคริปต์ python ใน python shell เช่น Idle หรือใน Django shell คุณสามารถทำสิ่งต่อไปนี้โดยใช้ฟังก์ชัน exec () Exec () เรียกใช้อาร์กิวเมนต์อ็อบเจ็กต์รหัส ออบเจ็กต์รหัสใน Python เป็นเพียงโค้ด Python ที่รวบรวม ดังนั้นคุณต้องคอมไพล์ไฟล์สคริปต์ของคุณก่อนแล้วจึงเรียกใช้งานโดยใช้ exec () จากเปลือกของคุณ:
>>>file_to_compile = open('/path/to/your/file.py').read() >>>code_object = compile(file_to_compile, '<string>', 'exec') >>>exec(code_object)
ฉันใช้ Python 3.4 ดูเอกสารคอมไพล์และExecสำหรับข้อมูลโดยละเอียด
ฉันทดสอบสิ่งนี้และได้ผล:
exec(open('filename').read()) # Don't forget to put the filename between ' '
คุณสามารถทำได้สองวิธี
import file_name
exec(open('file_name').read())
แต่ตรวจสอบให้แน่ใจว่าไฟล์นั้นควรเก็บไว้ในที่ที่โปรแกรมของคุณกำลังทำงานอยู่
ในสภาพแวดล้อม Windows คุณสามารถเรียกใช้ไฟล์ py บนบรรทัดคำสั่งเชลล์ Python3 ด้วยไวยากรณ์ต่อไปนี้:
exec (เปิด ('พา ธ สัมบูรณ์ไปยัง file_name') อ่าน ())
ด้านล่างนี้อธิบายวิธีเรียกใช้ไฟล์ helloworld.py อย่างง่ายจากบรรทัดคำสั่ง python shell
ตำแหน่งไฟล์: C: /Users/testuser/testfolder/helloworld.py
เนื้อหาไฟล์: พิมพ์ ("สวัสดีชาวโลก")
เราสามารถเรียกใช้ไฟล์นี้บน Python3.7 Shell ได้ดังนี้:
>>> 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
มีอีกหนึ่งทางเลือก (สำหรับ Windows) -
import os
os.system('py "<path of program with extension>"')
ในคอนโซล python คุณสามารถลองใช้ 2 วิธีต่อไปนี้
ภายใต้ไดเรกทอรีงานเดียวกัน
1. >> นำเข้า helloworld
# ถ้าคุณมีตัวแปรxคุณสามารถพิมพ์ได้ใน IDLE
>> helloworld.x
# ถ้าคุณมีฟังก์ชันfuncคุณสามารถเรียกมันแบบนี้ได้
>> helloworld.func ()
2. >> runfile ("./ helloworld.py")
helloworld.py
มีลักษณะเหมือน?