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