2015-10-09 45 views
0

我正在運行一個腳本,作爲一個任務我下載一個文件(而不是從Python:說用戶從瀏覽器下載一個TXT文件)並且可以由用戶在任何地方下載。在接下來的步驟我想一個腳本來查找該文件,並給我路徑加載文件.. 我試圖從蟒蛇如何找到任何特定文件的路徑,「就像搜索」,通過python

cmd1 = "find ~ -type f -name \"sometextfile.txt\"" 
p = subprocess.Popen(cmd1.strip().split(" "), stdout = subprocess.PIPE) 
output, err = p.communicate() 
print output 

仿效以下osacript但它說找不到「發現: 〜「

有沒有辦法實現我的目標?

回答

0

您可以使用glob這樣:

import glob 

file_ = glob.glob("sometextfile*")[0] 
0

您可以通過所需的目錄行走,檢查如果遇到文件:

import os 

def find_file(root_path, searched_file): 
    for root, dirs, filenames in os.walk(root_path): 
     if searched_file in filenames: 
      return os.path.join(root, searched_file) 

output = find_file(os.environ['HOME'], 'sometextfile.txt') # or whatever base directory 
+0

例如,如果我的文件(list.html)是在Documents dir的某個子目錄中。當我用「list.html」代替「sometextfile.txt」運行前面的腳本時,我總是得到以下結果> /Users/saurabh.datta/Desktop/list.html這不是我的目錄 – user2649476

+0

你確定你沒有你的de的list.html文件嗎? sktop?即使您可能在另一個目錄中有一個,此功能只會返回在磁盤中漫遊時遇到的第一個文件的路徑。如果你正在尋找'/ Users/saurabh.datta/Example/list.html',那麼沒有運氣,'Desktop'在'Example'之前。要麼確保文件名在目錄中是唯一的,要麼將'return'改爲'yield',這樣你就可以得到幾個結果(使用'list(find_file(...,...))')。 –

+0

它工作。抱歉 – user2649476

相關問題