Python 访问列表中的文件

Python 访问列表中的文件,python,file-io,python-3.x,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

我的搜索和销毁类型程序以失败告终。我已成功创建列表,但程序在
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)
导入操作系统
计数=0

而(count我找到了解决办法:p所需要的只是一点心灵的平静;)

我只是把这个代码
os.system(“cmd/c takeown/f”+x)
放在这里以获得对文件的访问权,然后删除成功

作为一名新手,这是一项成就

谢谢STACKOVERFLOW

您真的应该使用而不是
操作系统

import subprocess

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

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

我对Windows了解不多,但它能正确处理特殊字符吗?虽然这个解决方案似乎有效,我强烈建议您采纳@MartijnPieters给出的建议——从长远来看,这是一种更灵活的方法,而且早早地学习好习惯是值得的:)我不明白您为什么
附加
,然后
加入
,然后循环
拆分
,但不使用循环变量。看起来唯一的一点是将
z
设置为
file\u list
的最后一个条目,但是
z=file\u list[-1]
也应该这样做。我遗漏了什么?@DSM:其实append是用来打印要删除的文件的;使用join是因为我之前遇到了一个我现在记不起来的错误。我是Python的初学者,所以我害怕编辑那里的代码。但你确实给了我一个要点。我会调查的谢谢:)