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")'x'=python 変数

print thefile_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 に答える