Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取当前打开文件的完整路径_Python_Linux_Shell_Process_Operating System - Fatal编程技术网

Python 获取当前打开文件的完整路径

Python 获取当前打开文件的完整路径,python,linux,shell,process,operating-system,Python,Linux,Shell,Process,Operating System,我试图编写一个简单的应用程序,它必须读取某个目录中当前打开的所有文件。 更具体地说,我想在我的Documents文件夹中的任意位置获得打开的文件列表, 但我不想要进程的ID或进程名,我想要打开文件的完整路径 问题是我还没有找到什么可以做那件事。 无论是在linux shell中(使用ps和lsof命令),还是在python的psutil库中,我都无法做到这一点。所有这些都没有提供我需要的信息,这只是目录中当前打开的文件的路径 有什么建议吗 附言:我将这个问题标记为python问题(除了与操作系统

我试图编写一个简单的应用程序,它必须读取某个目录中当前打开的所有文件。 更具体地说,我想在我的Documents文件夹中的任意位置获得打开的文件列表, 但我不想要进程的ID或进程名,我想要打开文件的完整路径

问题是我还没有找到什么可以做那件事。 无论是在linux shell中(使用ps和lsof命令),还是在python的psutil库中,我都无法做到这一点。所有这些都没有提供我需要的信息,这只是目录中当前打开的文件的路径

有什么建议吗

附言:我将这个问题标记为python问题(除了与操作系统相关的标记),因为如果可以使用一些python库来完成,这将是一个加号。

这似乎是可行的(在Linux上):

它以非递归方式从当前目录读取打开的文件


对于递归搜索,请使用
+D
选项。请记住,它很容易受到竞争条件的影响——当你们得到输出时,情况可能已经改变了。最好尝试做一些事情(打开文件),并检查是否失败,例如打开文件并捕获异常或检查C中的null
file
值。

您使用的是windows还是linux?如果您还没有读过,请看这个问题:检查文件是否已打开以供写入(因此已锁定)很简单-请参阅flock()或fcntl。检查文件是否正在读取比较困难。有一些建议看起来值得一看。他只想要当前正在使用的文件!PS:Cześć:)
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']