ผมจะเขียนโปรแกรมตัวหนึ่งให้ php เรียก แล้วไปทำอะไร
บ้างอย่าง แล้วส่งค่ากลับเข้ามาให้ php นะครับ
ผมไม่รู้ว่าจะเขียนอย่างไรนะครับ
เช่น
programepython.exe ar1,ar2
แล้วเราจะได้ค่ากลับมาจาก programepython.exe
ใช้อะไรหรือครับ
เขาใช้ input() หรือ raw_input() หรือเปล่าครับ
แต่ทั้ง 2 ตัวมันต้องใช้ในตัวโปรแกรมไม่ใช่หรือครับ
กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น
ใช้ sys.argv ครับ argument ตัวที่ 0,1,2,… จะอยู่ในตัวแปรนี้ในรูปแบบของ list
ตัวอย่างง่ายๆ
จริงๆ แล้วเวลาใช้อ้างอิง sys.argv[0] ไปตรงๆ เลยก็ได้ แต่ตัวอย่างนี้เขียนให้เห็นชัดๆ
ตอบนาทีเดียวกันเลยครับ :D
ใจตรงกัน :-P
ช่วงนี้ต้องบอกว่า
จังหวะหัวใจตรงกัน
ใช้ sys.argv ครับ
$ python test.py arg1 arg2 arg3
Hello arguments : ['test.py', 'arg1', 'arg2', 'arg3']
แบบนี้อาจจะดูดีมีชาติตระกูลขึ้น
ขอขอบคุณทุกๆ ท่านเลยครับ
พอดีใน php5 มันใช้งาน mimetype ไม่ได้ ผมเลย
จะใช้python ตรวจสอบ mimetype ให้นะครับ
เขียนโปรแกรมได้แล้วครับ แต่มันมีปัญหาว่า
ตอนทดสอบผลออกมาตรงหมด แต่พอรันเป็น exe
ดันออกมาค่าเดี่ยวกันหมดเลยครับคือ "application/octet-stream"
เลยไม่เข้าใจว่ามันเป็นเพราะอะไรนะครับ
อ้อได้แล้วครับ
แก้ไข sys.argv[0] เป็น sys.argv[1]
พอดีรีบไปหน่อยครับ ไม่ได้ตรวจสอบอะไรเลยเรา
ลอง print filepath ออกมาดูหน่อยครับ พอทำเป็น .exe แล้ว argument อาจจะเลื่อน ไปเป็นตัวที่ [1]
แนะนำให้ใช้แบบย้อนกลับ เช่น sys.argv[-1] ซึ่งจะเอาตัวสุดท้ายมาแทน
แต่ตอนนี้เป็นปัญหาที่ว่า โปรแกรมที่เขียนด้วยpython
อ่านไฟล์ได้ไม่ถูกต้องครับ เหมือนกับว่ามันตรวจสอบจาก
นามสกุลของไฟล์นะครับ ไม่ได้ตรวจสอบจากตัวไฟล์จริงๆ
เช่น
c:/folder/mimeck.exe c:/temp/php11.tmp
ไฟล์ php11.tmp คือไฟล์ชั่วคราวที่php copy มานะครับ
แล้วนามสกุลไฟล์ .tmp ไม่มีมันก็เลยให้ค่าเป็น null
ออกมานะครับ เลยอยากสอบถามว่า พอจะมีวิธีที่ตรวจสอบmimetype
ที่ไม่ใช่ตรวจสอบจากนามสกุลไฟล์ไหมครับของ python ไหมครับ
Python มีโมดูล magic อยู่ครับ แต่เท่าที่ลอง ๆ ค้นดู มันมีให้ใช้เฉพาะบน Linux, UNIX* เท่านั้นครับ
ขอบคุณครับ