我在python中编写了一些加密代码,它从用户那里获取原始输入消息,然后使用AES对其进行加密和解密。现在我想要增强工作,我希望我可以从我的代码打开Windows资源管理器并浏览到我的计算机上的任何文件,选择它,当我按下OK按钮时,文件的路径存储在一个变量,所以我可以使用它用于处理。
我搜索了很多论坛,我已经设法打开Windows资源管理器,但没有传统的确定和取消按钮。如果用户按下OK按钮,则文件路径应存储在我的代码变量中。
在这方面的任何帮助将受到高度赞赏。
此外,只是为了让您知道我使用了以下代码:
导入操作系统 os.system(“start。”)
但资源管理器窗口没有任何取消或确定按钮。请帮忙
答案 0 :(得分: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])
如果用户选择多个文件,这将为您提供所选文件名的列表。只传递一个文件名时它会中断,所以一定要检查一下这个案例。