Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.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
Windows服务器上的Python-让用户访问共享文件_Python_File_Windows Server 2008_Shared - Fatal编程技术网

Windows服务器上的Python-让用户访问共享文件

Windows服务器上的Python-让用户访问共享文件,python,file,windows-server-2008,shared,Python,File,Windows Server 2008,Shared,我需要找到哪个进程、用户或pc打开了某个文件。我可以通过win服务器附带的实用程序手动完成,但我想编写脚本,因为我要处理数百个文件 有什么想法和建议吗 基本上是以下信息列表: 获取此信息需要一些未记录的Win32 API。您可以调用类似于handle.exe 来自使用它们的系统内部,但我建议您使用PyPi提供的psutil模块。下面是我碰巧拥有的一些示例代码(Py3),其中列出了所有正在使用的文件,您应该能够修改: import psutil for proc in psutil.proces

我需要找到哪个进程、用户或pc打开了某个文件。我可以通过win服务器附带的实用程序手动完成,但我想编写脚本,因为我要处理数百个文件

有什么想法和建议吗

基本上是以下信息列表:
获取此信息需要一些未记录的Win32 API。您可以调用类似于
handle.exe
来自使用它们的系统内部,但我建议您使用PyPi提供的
psutil
模块。下面是我碰巧拥有的一些示例代码(Py3),其中列出了所有正在使用的文件,您应该能够修改:

import psutil

for proc in psutil.process_iter():
    try:
        flist = proc.get_open_files()
        if flist:
            print(proc.pid,proc.name)
            for nt in flist:
                print("\t",nt.path)

    except psutil.NoSuchProcess as err:
        print("****",err) 
请注意,这类查询总是有可能出现争用情况—您不知道进程在什么时候打开或关闭文件,甚至不知道开始和结束


PS:如果您使用的是Python 3,我在安装psutil时遇到了一些问题,但是使用setup.py上的2to3转换实用程序解决了这些问题。

谢谢。我正在使用Python2.6并使psutil包正常工作,但在运行代码时出现以下错误:
文件“C:\Users\administrator\Desktop\test\u deleteme.py”,第5行,在flist=proc.get\u open\u files()文件“C:\Python26\lib\site packages\psutil init\u.py”,第41行,在get\u open\u files return self文件“C:\Python26\lib\site packages\psutil\u psmswindows.py”,第145行,在包装器raise AccessDenied(self.pid,self.\u process\u name)psutil.error.AccessDenied:(pid=1280)
中,看起来您正在尝试对一个您无权访问的进程进行互操作。以管理员身份运行?请给出您提到的“handle.exe from sysinternals”方法的示例?即使以管理员身份运行脚本,也无法避免某些进程被拒绝访问。