ฉันต้องการรับเส้นทางไฟล์เป็นอินพุตในแอปพลิเคชันคอนโซล Python ของฉัน
ขณะนี้ฉันสามารถขอเส้นทางแบบเต็มเป็นอินพุตในคอนโซลเท่านั้น
มีวิธีทริกเกอร์อินเทอร์เฟซผู้ใช้แบบง่ายๆที่ผู้ใช้สามารถเลือกไฟล์แทนการพิมพ์เส้นทางแบบเต็มได้หรือไม่?
ฉันต้องการรับเส้นทางไฟล์เป็นอินพุตในแอปพลิเคชันคอนโซล Python ของฉัน
ขณะนี้ฉันสามารถขอเส้นทางแบบเต็มเป็นอินพุตในคอนโซลเท่านั้น
มีวิธีทริกเกอร์อินเทอร์เฟซผู้ใช้แบบง่ายๆที่ผู้ใช้สามารถเลือกไฟล์แทนการพิมพ์เส้นทางแบบเต็มได้หรือไม่?
คำตอบ:
ใช้ tkinter เป็นอย่างไรบ้าง?
from Tkinter import Tk
from tkinter.filedialog import askopenfilename
Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing
filename = askopenfilename() # show an "Open" dialog box and return the path to the selected file
print(filename)
ทำ!
คำตอบของ Etaoin เวอร์ชัน Python 3.x เพื่อความสมบูรณ์:
from tkinter.filedialog import askopenfilename
filename = askopenfilename()
import tkinter
tkinter.Tk().withdraw()
ด้วยEasyGui :
import easygui
print(easygui.fileopenbox())
ติดตั้ง:
pip install easygui
การสาธิต:
import easygui
easygui.egdemo()
invalid syntax
ข้อผิดพลาดสำหรับprint easygui.diropenbox()
?
ใน Python 2 ใช้tkFileDialog
โมดูล
import tkFileDialog
tkFileDialog.askopenfilename()
ใน Python 3 ใช้tkinter.filedialog
โมดูล
import tkinter.filedialog
tkinter.filedialog.askopenfilename()
ตัวเลือกที่จะต้องพิจารณาก็คือ Zenity: http://freecode.com/projects/zenity
ฉันมีสถานการณ์ที่ฉันกำลังพัฒนาแอปพลิเคชันเซิร์ฟเวอร์ Python (ไม่มีคอมโพเนนต์ GUI) และด้วยเหตุนี้จึงไม่ต้องการแนะนำการพึ่งพาชุดเครื่องมือ python GUI ใด ๆ แต่ฉันต้องการให้สคริปต์ดีบักบางส่วนของฉันถูกกำหนดพารามิเตอร์โดยไฟล์อินพุตและต้องการ แจ้งให้ผู้ใช้เห็นไฟล์หากไม่ได้ระบุไว้ในบรรทัดคำสั่ง Zenity เป็นสิ่งที่ลงตัว เพื่อให้บรรลุสิ่งนี้เรียกใช้ "zenity --file-selection" โดยใช้โมดูลกระบวนการย่อยและจับภาพ stdout แน่นอนว่าโซลูชันนี้ไม่ใช่เฉพาะ Python
Zenity รองรับหลายแพลตฟอร์มและได้ติดตั้งไว้แล้วบนเซิร์ฟเวอร์ dev ของเราดังนั้นจึงอำนวยความสะดวกในการดีบัก / การพัฒนาของเราโดยไม่ต้องมีการพึ่งพาที่ไม่ต้องการ
ฉันได้ผลลัพธ์ที่ดีกว่า wxPython มากกว่า tkinter ตามที่แนะนำในคำตอบนี้สำหรับคำถามที่ซ้ำกันในภายหลัง:
https://stackoverflow.com/a/9319832
เวอร์ชัน wxPython สร้างกล่องโต้ตอบไฟล์ที่ดูเหมือนกับกล่องโต้ตอบเปิดไฟล์จากแอปพลิเคชันอื่น ๆ บนการติดตั้ง OpenSUSE Tumbleweed ของฉันกับเดสก์ท็อป xfce ในขณะที่ tkinter สร้างสิ่งที่แคบและอ่านยากด้วยอินเทอร์เฟซการเลื่อนด้านข้างที่ไม่คุ้นเคย