Hướng dẫn how do you prompt a file in python? - làm thế nào để bạn nhắc một tệp trong python?

Tôi có một tập lệnh đơn giản phân tích tệp và tải nội dung của nó vào cơ sở dữ liệu. Tôi không cần giao diện người dùng, nhưng ngay bây giờ tôi đang nhắc người dùng cho tệp để phân tích cú pháp bằng cách sử dụng

import tkinter as tk
from tkinter import filedialog

root = tk.Tk()
root.withdraw()

file_path = filedialog.askopenfilename()
1, không thân thiện nhất, đặc biệt là vì người dùng không thể sao chép/dán đường dẫn. Tôi muốn một cách nhanh chóng và dễ dàng để trình bày hộp thoại chọn tệp cho người dùng, họ có thể chọn tệp và sau đó nó được tải vào cơ sở dữ liệu. .

import tkFileDialog
file_path_string = tkFileDialog.askopenfilename()

Mã này gần với những gì tôi muốn, nhưng nó để lại một khung trống khó chịu mở (không thể đóng, có lẽ vì tôi chưa đăng ký một trình xử lý sự kiện gần).

Tôi không phải sử dụng tkinter, nhưng vì nó nằm trong thư viện tiêu chuẩn Python, đây là một ứng cử viên tốt cho giải pháp nhanh nhất và dễ nhất.

Một cách nhanh chóng và dễ dàng để nhắc cho một tệp hoặc tên tệp trong tập lệnh mà không có UI khác?

hỏi ngày 16 tháng 2 năm 2012 lúc 21:24Feb 16, 2012 at 21:24

Hướng dẫn how do you prompt a file in python? - làm thế nào để bạn nhắc một tệp trong python?

Buttons840Buttons840Buttons840

8.87715 Huy hiệu vàng55 Huy hiệu bạc84 Huy hiệu đồng15 gold badges55 silver badges84 bronze badges

0

Tkinter là cách dễ nhất nếu bạn không muốn có bất kỳ sự phụ thuộc nào khác. Để chỉ hiển thị hộp thoại mà không có bất kỳ phần tử GUI nào khác, bạn phải ẩn cửa sổ gốc bằng phương thức

import tkinter as tk
from tkinter import filedialog

root = tk.Tk()
root.withdraw()

file_path = filedialog.askopenfilename()
2:

import tkinter as tk
from tkinter import filedialog

root = tk.Tk()
root.withdraw()

file_path = filedialog.askopenfilename()

Biến thể Python 2:

import Tkinter, tkFileDialog

root = Tkinter.Tk()
root.withdraw()

file_path = tkFileDialog.askopenfilename()

JFS

384K183 Huy hiệu vàng949 Huy hiệu bạc1622 Huy hiệu Đồng183 gold badges949 silver badges1622 bronze badges

Đã trả lời ngày 2 tháng 1 năm 2013 lúc 8:58Jan 2, 2013 at 8:58

Hướng dẫn how do you prompt a file in python? - làm thế nào để bạn nhắc một tệp trong python?

TomVoditomvoditomvodi

5.1872 Huy hiệu vàng27 Huy hiệu bạc37 Huy hiệu Đồng2 gold badges27 silver badges37 bronze badges

12

Bạn có thể sử dụng EasyGui:

import easygui

path = easygui.fileopenbox()

Để cài đặt

import tkinter as tk
from tkinter import filedialog

root = tk.Tk()
root.withdraw()

file_path = filedialog.askopenfilename()
3, bạn có thể sử dụng
import tkinter as tk
from tkinter import filedialog

root = tk.Tk()
root.withdraw()

file_path = filedialog.askopenfilename()
4:

pip3 install easygui

Đó là một mô -đun Python tinh khiết duy nhất (

import tkinter as tk
from tkinter import filedialog

root = tk.Tk()
root.withdraw()

file_path = filedialog.askopenfilename()
5) sử dụng
import tkinter as tk
from tkinter import filedialog

root = tk.Tk()
root.withdraw()

file_path = filedialog.askopenfilename()
6.

nbro

14.4K27 Huy hiệu vàng104 Huy hiệu bạc188 Huy hiệu đồng27 gold badges104 silver badges188 bronze badges

Đã trả lời ngày 16 tháng 2 năm 2012 lúc 21:59Feb 16, 2012 at 21:59

JFSJFSjfs

384K183 Huy hiệu vàng949 Huy hiệu bạc1622 Huy hiệu Đồng183 gold badges949 silver badges1622 bronze badges

6

Đã trả lời ngày 2 tháng 1 năm 2013 lúc 8:58

import wx

def get_path(wildcard):
    app = wx.App(None)
    style = wx.FD_OPEN | wx.FD_FILE_MUST_EXIST
    dialog = wx.FileDialog(None, 'Open', wildcard=wildcard, style=style)
    if dialog.ShowModal() == wx.ID_OK:
        path = dialog.GetPath()
    else:
        path = None
    dialog.Destroy()
    return path

print get_path('*.txt')

nbro

14.4K27 Huy hiệu vàng104 Huy hiệu bạc188 Huy hiệu đồng27 gold badges104 silver badges188 bronze badges

Đã trả lời ngày 16 tháng 2 năm 2012 lúc 21:59Feb 16, 2012 at 22:07

JFSJFSFogleBird

Hãy thử với wxpython:25 gold badges122 silver badges131 bronze badges

Đã trả lời ngày 16 tháng 2 năm 2012 lúc 22:07

import win32gui, win32con, os

filter='Python Scripts\0*.py;*.pyw;*.pys\0Text files\0*.txt\0'
customfilter='Other file types\0*.*\0'
fname, customfilter, flags=win32gui.GetOpenFileNameW(
    InitialDir=os.environ['temp'],
    Flags=win32con.OFN_ALLOWMULTISELECT|win32con.OFN_EXPLORER,
    File='somefilename', DefExt='py',
    Title='GetOpenFileNameW',
    Filter=filter,
    CustomFilter=customfilter,
    FilterIndex=0)

print 'open file names:', repr(fname)
print 'filter used:', repr(customfilter)
print 'Flags:', flags
for k,v in win32con.__dict__.items():
    if k.startswith('OFN_') and flags & v:
        print '\t'+k

FoglebirdfoglebirdJul 23, 2019 at 14:57

72K25 Huy hiệu vàng122 Huy hiệu bạc131 Huy hiệu ĐồngKevin Smyth

import tkinter as tk
from tkinter import filedialog

root = tk.Tk()
root.withdraw()

file_path = filedialog.askopenfilename()
7 cung cấp quyền truy cập vào chức năng Win32
import tkinter as tk
from tkinter import filedialog

root = tk.Tk()
root.withdraw()

file_path = filedialog.askopenfilename()
8. Từ ví dụ21 silver badges21 bronze badges

5

Đã trả lời ngày 23 tháng 7 năm 2019 lúc 14:57

Kevin Smythkevin Smyth

1.84221 Huy hiệu bạc21 Huy hiệu đồng

Sử dụng Tkinter (Python 2) hoặc Tkinter (Python 3), thực sự có thể hiển thị hộp thoại mở tệp (xem các câu trả lời khác ở đây). Tuy nhiên, xin lưu ý rằng giao diện người dùng của hộp thoại đó đã lỗi thời và không tương ứng với hộp thoại mở tệp mới hơn có sẵn trong Windows 10.

Hơn nữa - nếu bạn đang tìm cách nhúng hỗ trợ Python vào ứng dụng của riêng bạn - bạn sẽ sớm tìm ra thư viện Tkinter không phải là mã nguồn mở và thậm chí nhiều hơn - đó là thư viện thương mại.

  • .
  • Vì vậy, Thư viện Tkinter sẽ tốn tiền cho bất kỳ ứng dụng nào muốn nhúng Python.

Bản thân tôi đã tìm được thư viện Pythonnet:

Tổng quan ở đây: http://pythonnet.github.io/

pip3 install pythonnet

Mã nguồn tại đây: https://github.com/pythonnet/pythonnet

https://stackoverflow.com/a/50446803/2338477

(Giấy phép MIT)

import sys
import ctypes
co_initialize = ctypes.windll.ole32.CoInitialize
#   Force STA mode
co_initialize(None)

import clr 

clr.AddReference('System.Windows.Forms')

from System.Windows.Forms import OpenFileDialog

file_dialog = OpenFileDialog()
ret = file_dialog.ShowDialog()
if ret != 1:
    print("Cancelled")
    sys.exit()

print(file_dialog.FileName)

Sử dụng lệnh sau có thể cài đặt Pythonnet:

Và ở đây bạn có thể tìm ra ví dụ làm việc để sử dụng hộp thoại Tệp mở:

Hãy để tôi sao chép một ví dụ ở đây:Nov 14, 2019 at 16:40

Nếu bạn cũng bỏ lỡ giao diện người dùng phức tạp hơn - Xem thư mục demo trong Pythonnet Git.TarmoPikaro

Tôi không chắc chắn về tính di động đối với hệ điều hành khác, chưa thử, nhưng .NET 5 được lên kế hoạch được chuyển sang nhiều hệ điều hành (tìm kiếm ".NET 5 nền tảng", https://devblogs.microsoft.com/dotnet/intucing -net -5/) -Vì vậy, công nghệ này cũng là bằng chứng trong tương lai.1 gold badge43 silver badges53 bronze badges

6

Đã trả lời ngày 14 tháng 11 năm 2019 lúc 16:40

Tarmopikarotarmopikaro

4.3291 Huy hiệu vàng43 Huy hiệu bạc53 Huy hiệu đồngFeb 16, 2012 at 21:39

Nếu bạn không cần UI hoặc mong đợi chương trình sẽ chạy trong CLI, bạn có thể phân tích FilePath như một đối số. Điều này sẽ cho phép bạn sử dụng tính năng AutoComplete của CLI để nhanh chóng tìm thấy tệp bạn cần.SQDK

Điều này có lẽ sẽ chỉ tiện dụng nếu tập lệnh không tương tác bên cạnh đầu vào FilePath.3 gold badges17 silver badges16 bronze badges

3

Đã trả lời ngày 16 tháng 2 năm 2012 lúc 21:39

import webview

def webview_file_dialog():
    file = None
    def open_file_dialog(w):
        nonlocal file
        try:
            file = w.create_file_dialog(webview.OPEN_DIALOG)[0]
        except TypeError:
            pass  # user exited file dialog without picking
        finally:
            w.destroy()
    window = webview.create_window("", hidden=True)
    webview.start(open_file_dialog, window)
    # file will either be a string or None
    return file

print(webview_file_dialog())

Sqdksqdk

3.7773 huy hiệu vàng17 Huy hiệu bạc16 Huy hiệu đồngJul 2, 2021 at 20:30

Hướng dẫn how do you prompt a file in python? - làm thế nào để bạn nhắc một tệp trong python?

Một tùy chọn bất khả tri khác, hãy sử dụng pywebview:

import tkinter as tk
from tkinter import filedialog

root = tk.Tk()
root.withdraw()

file_path = filedialog.askopenfilename()
0

Môi trường: Python3.8.6 trên Mac - Mặc dù tôi đã sử dụng PyWebView trên Windows 10 trước đây.

Đã trả lời ngày 2 tháng 7 năm 2021 lúc 20:30

Tôi chỉ tình cờ thấy thủ thuật nhỏ này chỉ dành cho Windows: Chạy PowerShell.exe từ quy trình con.

Lưu ý việc sử dụng tùy chọn của các hằng số thư mục hệ thống. .Aug 28 at 5:27

Hướng dẫn how do you prompt a file in python? - làm thế nào để bạn nhắc một tệp trong python?

Kiki Jewellkiki JewellKiki Jewell

7967 Huy hiệu bạc4 Huy hiệu đồng7 silver badges4 bronze badges

1

Làm thế nào để bạn nhắc đầu vào từ một tệp trong Python?

Sử dụng chức năng đầu vào trên Python 3 hoặc RAW_Input nếu bạn đang sử dụng Python 2: # Python 3 với Open (Input (), 'Ru') như Input_File: # Python 2 với Open (Raw_Input (), 'Ru') Input_File: Điều này nhắc nhở người dùng về đầu vào văn bản và trả về nó dưới dạng chuỗi. Trong trường hợp của bạn, điều này sẽ nhắc cho một đường dẫn tệp được nhập.: # Python 3 with open(input(), 'rU') as input_file: # Python 2 with open(raw_input(), 'rU') as input_file: This prompts the user for text input and returns it as a string. In your case, this will prompt for a file path to be input.

Làm thế nào để bạn nhắc tên tệp trong Python?

Chương trình Python để lấy tên tệp từ đường dẫn tệp..
Nhập hệ điều hành # Tên tệp với phần mở rộng file_name = os.path.basename ('/root/file.ext') # Tên tệp không có phần mở rộng in (os.path.splitext (file_name) [0]) Chạy mã ..
Nhập bản in hệ điều hành (Os.Path.SpliteXt (File_Name)) ....
từ Pathlib Nhập đường dẫn PRINT (đường dẫn ('/root/file.ext'). Thân cây).

Làm cách nào để duyệt các tệp trong Python?

Thay vì mã hóa đường dẫn đến một tệp được sử dụng bởi chương trình Python, chúng tôi có thể cho phép người dùng duyệt cấu trúc thư mục HĐH bằng GUI và cho phép người dùng chọn tệp.Điều này đạt được bằng cách sử dụng mô -đun Tkinter trong đó chúng tôi xác định một khung vẽ và đặt một nút trên đó để duyệt các tệp.using the tkinter module in which we define a canvas and put a button on it to browse the files.

Làm thế nào để bạn chọn và mở một tệp trong Python?

Đây phải là câu trả lời được chấp nhận.....
Tôi chỉ sử dụng điều này cho công việc của tôi là tốt.....
Trên python3: tkinter.filedialog.askopenfilename () ....
Trên python2: nhập tkinter dưới dạng tk và nhập tkfiledialog và file_path = tkfileDialog.askopenFileName ().