2010-09-04 63 views
0

我已經在python中編寫了一些加密代碼,它從用戶接收原始輸入消息,然後使用AES對其進行加密和解密。現在我想增強工作,我希望我可以從我的代碼打開Windows資源管理器,並瀏覽到我的電腦上的任何文件,選擇它,當我按下OK按鈕時,文件的路徑存儲在一個變量,所以我可以使用它用於處理。在python中使用windows資源管理器瀏覽器存儲文件路徑

我有搜索很多論壇,我設法打開Windows資源管理器,但沒有傳統的確定和取消按鈕。如果用戶按下「確定」按鈕,文件的路徑應該存儲在我的代碼變量中。

在這方面的任何幫助將不勝感激。

而且,只是爲了讓你知道我用下面的代碼:(「開始」)

進口OS
使用os.system

但可是沒有任何的瀏覽器窗口或取消OK按鈕。請幫助

回答

6

這是因爲當您在Windows中打開文件時看到的內容實際上並不是資源管理器窗口,因此稱爲通用對話框。我假設你正在referering這個對話框:

Open file dialog

有不同的方式,你可以去很可能只是用Tkinter的模塊從Python標準庫中打開普通打開的對話框,其中最簡單,即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]) 

這會給你所選的列表用戶選擇多個文件時的文件名。當只傳遞一個文件名時它會中斷,所以一定要檢查這種情況。

+0

啊....這就是我正在尋找。不幸的是,我是Python的初學者,所以不知道如何使用它。我認爲我必須導入tkFileDialog 以及如何使用askopenfilename ...如果您可以提供一種線路語法來理解我的理解,那將非常棒。 – fahad 2010-09-04 19:09:40

+0

我已經使用下面的代碼,通過互聯網搜索它。 從tkFileDialog進口askopenfilenames A = askopenfilenames() 打印一個 這是解決我的問題,但唯一的一點是,它是給在大括號輸出,如何消除這些捲曲brakets或讀取路徑沒有他們?還出現一個小窗口,它是空白的,不做任何事情?如何避免打開它,它也會自動打開。任何想法爲什麼是這樣? {C:/ Users/miracle/Desktop/testing python file read/testit。txt} – fahad 2010-09-04 19:18:05

+0

from tkFileDialog import askopenfilenames file_name = askopenfilenames() print file_name myfile = open(file_name) 發生以下錯誤。據我所知,這是因爲大括號,可能是我們需要添加特殊模式來讀取文件,由所選路徑提供。 IOError:[Errno 22] invalid mode('r')or filename:u'{C:/ Users/miracle/Desktop/testing python file read/fahad.txt'' 請指導! – fahad 2010-09-04 19:25:46

相關問題