Saya memiliki skrip sederhana yang mem-parsing file dan memuat isinya ke database. Saya tidak memerlukan UI, tetapi sekarang saya meminta pengguna untuk mengurai menggunakan file raw_input
yang paling tidak ramah, terutama karena pengguna tidak dapat menyalin / menempel jalur tersebut. Saya ingin cara yang cepat dan mudah untuk menyajikan dialog pemilihan file kepada pengguna, mereka dapat memilih file tersebut, dan kemudian dimuat ke database. (Dalam kasus penggunaan saya, jika mereka kebetulan memilih file yang salah, penguraian akan gagal, dan tidak akan menjadi masalah meskipun dimuat ke database.)
import tkFileDialog
file_path_string = tkFileDialog.askopenfilename()
Kode ini mendekati apa yang saya inginkan, tetapi meninggalkan bingkai kosong yang mengganggu terbuka (yang tidak dapat ditutup, mungkin karena saya belum mendaftarkan penangan kejadian dekat).
Saya tidak harus menggunakan tkInter, tetapi karena ada di pustaka standar Python, ini adalah kandidat yang baik untuk solusi tercepat dan termudah.
Apa cara cepat dan mudah untuk meminta file atau nama file dalam skrip tanpa UI lainnya?
sumber
Jawaban:
Tkinter adalah cara termudah jika Anda tidak ingin memiliki dependensi lain. Untuk hanya menampilkan dialog tanpa elemen GUI lainnya, Anda harus menyembunyikan jendela root menggunakan
withdraw
metode:Varian Python 2:
sumber
tkinter.filedialog.askopenfilename()
import Tkinter as tk
danimport tkFileDialog
danfile_path = tkFileDialog.askopenfilename()
Anda dapat menggunakan easygui :
Untuk menginstal
easygui
, Anda dapat menggunakanpip
:Ini adalah satu modul Python murni (
easygui.py
) yang menggunakantkinter
.sumber
Coba dengan wxPython :
sumber
Jika Anda tidak memerlukan UI atau mengharapkan program dijalankan dalam CLI, Anda dapat mengurai jalur file sebagai argumen. Ini akan memungkinkan Anda menggunakan fitur pelengkapan otomatis CLI untuk menemukan file yang Anda butuhkan dengan cepat.
Ini mungkin hanya akan berguna jika skrip non-interaktif selain input jalur file.
sumber
Lihat EasyGUI, modul yang sangat mudah digunakan yang seharusnya melakukan pekerjaan itu - http://easygui.sourceforge.net/
Anda akan menggunakan fungsi fileopenbox yang dirinci pada halaman dokumentasi api ini - https://easygui.readthedocs.io/en/latest/api.html
sumber
pywin32
menyediakan akses keGetOpenFileName
fungsi win32. Dari contohnyasumber
Menggunakan tkinter (python 2) atau Tkinter (python 3) memang memungkinkan untuk menampilkan dialog buka file (Lihat jawaban lain di sini). Harap perhatikan bahwa antarmuka pengguna dari dialog itu sudah usang dan tidak sesuai dengan dialog buka file yang lebih baru yang tersedia di Windows 10.
Selain itu - jika Anda sedang mencari cara untuk menanamkan dukungan python ke dalam aplikasi Anda sendiri - Anda akan segera mengetahui bahwa pustaka tkinter bukanlah kode sumber terbuka dan bahkan lebih - ini adalah pustaka komersial.
(Misalnya, penelusuran "harga activetcl" akan membawa Anda ke halaman web ini: https://reviews.financesonline.com/p/activetcl/ )
Jadi pustaka tkinter akan dikenakan biaya untuk aplikasi apa pun yang ingin menyematkan python.
Saya sendiri berhasil menemukan pustaka pythonnet:
(Lisensi MIT)
Menggunakan perintah berikut dimungkinkan untuk menginstal pythonnet:
Dan di sini Anda dapat mengetahui contoh kerja untuk menggunakan dialog file terbuka:
https://stackoverflow.com/a/50446803/2338477
Izinkan saya juga menyalin contoh di sini:
Jika Anda juga melewatkan antarmuka pengguna yang lebih kompleks - lihat folder Demo di pythonnet git.
Saya tidak yakin tentang portabilitas ke OS lain, belum mencoba, tetapi .net 5 direncanakan untuk di-porting ke beberapa OS (Cari "platform .net 5", https://devblogs.microsoft.com/dotnet/introducing -net-5 / ) - jadi teknologi ini juga merupakan bukti masa depan.
sumber