在Python中使用Windows资源管理器浏览器存储文件路径

0 投票
1 回答
6049 浏览
提问于 2025-04-16 03:42

我写了一些用Python编写的加密代码,这段代码可以接收用户输入的原始信息,然后使用AES进行加密和解密。现在我想进一步完善这个功能,希望能从我的代码中打开Windows资源管理器,浏览电脑上的任何文件,选择一个文件,然后按下确定按钮,这样文件的路径就能存储在一个变量中,以便我后续处理。

我在很多论坛上查找过,虽然我已经能打开Windows资源管理器,但里面没有传统的确定和取消按钮。如果用户按下确定按钮,文件的路径应该被存储在我的代码变量中。

在这方面的任何帮助都将非常感谢。

另外,告诉你我使用了以下代码:

import os
os.system("start .")

但是资源管理器窗口里没有取消或确定按钮。请帮帮我。

1 个回答

6

你在Windows中打开文件时看到的其实不是一个普通的文件管理窗口,而是一个叫做“通用对话框”的东西。我猜你指的就是这个对话框:

打开文件对话框

打开这个通用对话框的方法有很多,其中最简单的可能就是使用Python标准库中的Tkinter模块,特别是tkFileDialog模块里的askopenfilename函数。

示例代码:

import Tkinter
import tkFileDialog

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

filename = tkFileDialog.askopenfilename(parent=root,title='Open file to encrypt')

关于大括号的部分:你使用askopenfilenames来告诉Tk你可能想选择多个文件名。这就是为什么你会看到用大括号括起来的文件名列表。我其实怀疑这是Python的Tk绑定中的一个小问题,导致文件名没有被分开,而是返回了一个列表,但你可以用类似下面的代码来轻松解决这个问题:

import re
# ...
# ...
filenames = tkFileDialog.askopenfilenames(parent=root)
files_to_process = re.split("\}\W\{", filenames[1:-1])

这样做会给你一个用户选择的文件名列表,如果用户选择了多个文件就会返回这个列表。如果只选择了一个文件,这段代码会出错,所以一定要检查这种情况。

撰写回答