2014-04-06 65 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

感谢,纠正;) –

相关问题