获得对列表中文件的访问权限

时间:2012-12-19 15:57:50

标签: python file-io python-3.x

我的搜索和销毁类型程序最终徒劳无功。我已成功编制了该列表,但该程序终止于PermissionError。 我的代码如下:

import os
count=0
while(count<4):
    file_list=[]
    for root, dirs, files in os.walk(os.path.expandvars('%windir%')):
        for f_name in files:
            if f_name=='infected-file-1':
                file_list.append(root+"\\"+f_name)
                str1='\n'.join(file_list)
                for x in str1.split('\n'): pass
                os.remove(x)
                continue
            for root, dirs, files in os.walk(os.path.expandvars('%windir%')):
                for f_name in files:
                    if f_name=='infected-file-2':
                        file_list.append(root+"\\"+f_name)
                        str1='\n'.join(file_list)
                        for z in str1.split('\n'): pass
                        os.remove(z)

程序启动良好但由于存在权限错误而无法删除文件

所以我打算使用os.system来使用takeown来获得完全控制但我如何在语法中使用它,即os.system("takeown /f x")其中'x'= python变量

您可以建议我使用打印file_list来获取文件的地址然后使用takeown但这不是我想要的。 [我的程序不包括用户交互]

while命令用于重复该过程以确保文件不再存在!

2 个答案:

答案 0 :(得分:2)

您应该使用subprocess module代替os.system

import subprocess

subprocess.call(['takeown', '/f', x])

.call() function的第一个参数是命令参数列表,包括命令本身。只需使用变量x作为该列表的元素。

答案 1 :(得分:0)

我找到了解决办法:P所需要的只是一些安心;)

我刚刚放置了此代码os.system("cmd /c takeown /f "+x)以获取对该文件的访问权限,然后删除成功。

作为新手,这是一项成就

谢谢你的支持