2014-04-06 64 views
0

我想編寫一個簡單的應用程序必須在特定目錄中讀取所有當前打開的文件的完整路徑。 更具體地說,我想獲得在我的Documents文件夾內的任何地方打開的文件列表, 但我不想只有進程的ID或進程名稱,我想要打開文件的完整路徑。獲取的當前打開的文件

事情是我沒有找到任何可以做到的事情。 它無論是在Linux的shell(用ps和lsof的命令),也不使用Python的psutil庫我不能這樣做。這些都沒有給我提供我需要的信息,這只是目錄中當前打開的文件的路徑。

有什麼建議嗎? P:我將它標記爲python問題(除了與os相關的標記),因爲如果可以使用一些python庫,它會是一個加號。

+0

您使用的是Windows還是Linux? –

+0

我正在使用linux – user3264316

+0

看看這個問題,如果你還沒有讀它:http://stackoverflow.com/questions/589407/python-how-to-check-if-a-file-is-used-通過-另一個應用 –

回答

0

這似乎是工作(在Linux上):

import subprocess 
import shlex 

cmd = shlex.split('lsof -F n +d .') 
try: 
    output = subprocess.check_output(cmd).splitlines() 
except subprocess.CalledProcessError as err: 
    output = err.output.splitlines() 
output = [line[3:] for line in output if line.startswith('n./')] 

# Out[3]: ['file.tmp'] 

它讀取當前目錄下打開的文件,非遞歸。

對於遞歸搜索,請使用+D選項。請記住,它是脆弱的競爭條件 - 當你得到你的輸出中,情況可能已經改變。嘗試做一些事情(打開文件)總是最好的,並檢查失敗,例如打開文件並捕獲異常或檢查空值FILE C中的值。

+0

他只想要當前正在使用的文件! PS:Cześć:) –

+0

感謝,糾正;) –

相關問題