Python - 删除所有文件除外

时间:2016-01-21 18:11:26

标签: python csv

我有一个Python脚本,我试图删除此目录中除.CEv文件外的所有文件。在" not"上获取语法错误在这一行:

for CleanUp not in glob.glob("c:\python\AIO*.*"):

如果我删除" not",它将删除AIO.csv文件,但我需要保留该文件而只保留该文件。不清楚为什么它不起作用。

import os
import glob
import time

file_path = "c:\python\AIO.csv"
while not os.path.exists(file_path):
    time.sleep(10)

if os.path.isfile(file_path):
 #Verifies CSV file was created, then deletes unneeded files.
    for CleanUp not in glob.glob("c:\python\AIO*.*"):
        os.remove(CleanUp)

2 个答案:

答案 0 :(得分:7)

试试这个

import os
import glob
import time

file_path = "c:\python\AIO.csv"
while not os.path.exists(file_path):
time.sleep(10)

if os.path.isfile(file_path):
    #Verifies CSV file was created, then deletes unneeded files.
    for CleanUp in glob.glob('C:/python/*.*'):
        print CleanUp
        if not CleanUp.endswith('AIO.csv'):    
            os.remove(CleanUp)

Glob不打印任何目录,只打印文件,它也会获得整个路径,因此您只需拨打os.remove(CleanUp)即可。这应该工作。它适用于我的机器,也是Windows 7 x64。

我认为你的问题是你在路径c:\python\AIO*.*上循环这是一个文件所以它只做一个循环并终止跳过目录中的所有其他文件

答案 1 :(得分:1)

另一种方法是获取文件列表(glob.glob返回一个列表),然后删除要保留的项目。

import os
import glob
import time

file_path = "c:\python\AIO.csv"
while not os.path.exists(file_path):
    time.sleep(10)

if os.path.isfile(file_path):
   # get list of files that match
   cleanupFiles = glob.glob("c:\python\AIO*.*")
   cleanupFiles.remove(file_path)
   for cleanupFile in cleanupFiles:
      os.remove(cleanupFile)