0

我的搜索和销毁型程序以徒劳无功而告终。我已成功编排列表,但程序在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")where 'x'=python variable

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

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

4

2 回答 2

2

您应该真正使用该subprocess模块而不是os.system

import subprocess

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

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

于 2012-12-19T16:13:43.400 回答
0

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

我只是放置此代码os.system("cmd /c takeown /f "+x)以访问该文件,然后删除成功。

作为一个新手,这是一个成就

谢谢堆栈溢出

于 2012-12-19T16:13:41.030 回答