-4

我正在尝试创建一个 Python 脚本来删除C:\Windows\CSC\v2.0.6\namespace 我需要一个想法下的所有内容。要在命令行中执行此操作,我必须先转到 cmd,然后再psexec -s cmd转到 C:\Windows\CSC\v2.0.6\namespacerd *那里的任何文件夹。我想要创建一个脚本以删除所有..任何帮助

4

2 回答 2

2

此代码应删除目录中的所有文件或目录:

import os, shutil
folder = "C:\Windows\CSC\v2.0.6\namespace"
for item in os.listdir(folder):
    path = os.path.join(folder, item)
    try:
        os.unlink(path) # delete if the item is a file
    except Exception as e:
        shutil.rmtree(path) # delete if the item is a folder

之前已经回答了这个问题。

于 2013-04-16T20:52:26.043 回答
0

一个简单的谷歌搜索和一些修改:

import os
mainPath = "C:\Windows\CSC\v2.0.6\namespace"
files = os.listdir(mainPath)
for f in files:
    os.remove('{}/{}'.format(mainPath, f))

如果你想递归地找到所有文件然后删除它们(这是我昨天写的一个小脚本):

import os, os.path
def getAllFiles(mainPath):
    subPaths = os.listdir(mainPath)
    for path in subPaths:
        pathDir = '{}\{}'.format(mainPath, path)
        if os.path.isdir(pathDir):
            paths.extend(getAllFiles(pathDir, paths))
        else:
                paths.append(pathDir)
    return paths

那么你可以这样做:

files = getAllFiles(mainPath)
for f in files:
    os.remove(f)

MemoryError注意:如果子文件夹太多(它会创建很多递归节点),递归算法会变得有点慢(并且可能会提高 a )。

为避免这种情况,您可以将递归函数用作辅助函数,由主迭代函数调用:

def getDirs(path):
    sub = os.listdir(path)
    paths = []
    for p in sub:
        pDir = '{}\{}'.format(path, p)
        if os.path.isdir(pDir):
            paths.extend(getAllFiles(pDir, paths)) # getAllFiles is the same as above
        else:
            paths.append(pDir)
    return paths

但是,对于非常大的子文件夹,它会变得很慢。对我来说,完成C:\Python27\Lib大约需要 6-7 秒(它里面有大约 5k+ 个文件,还有很多很多子文件夹)。

于 2013-04-16T20:53:07.470 回答