首页 > 解决方案 > 使用python代码删除unix中的旧文件

问题描述

我在下面有 python 代码,需要检查 12 天以上的 csv 文件并删除它们。但它不会删除文件。代码有什么问题?

import os, sys, time, glob, datetime
from subprocess import call



file_path = '/export/data/history'
now = time.time()
files = os.listdir(file_path)
os.chdir(file_path)
extension = 'csv'
result = [i for i in glob.glob('*.{}'.format(extension))]
# files = os.path.join(dirs, '')
print(result)
a = 0

def getCurrentTime():
    currentTime=datetime.datetime.now()
    return currentTime

def getTimeDifference(path):
    last_modified_time =datetime.datetime.fromtimestamp(os.path.getmtime(path))
    #print("modifid time = ")
    print("Last modifid Date = "+str(last_modified_time))
    timeDiff = getCurrentTime() - last_modified_time
    return timeDiff

for xfile in result:
    if os.path.isfile( file_path + xfile ):
                d1 = getTimeDifference(file_path + xfile)
                if(d1.days >= 12):
                        os.remove(xfile)
                        a= a+1

print (str(a)+' csv files deleted .')

我正在使用 python 3.6

标签: pythonpython-3.x

解决方案


看起来问题是您的文件路径的创建方式:

if os.path.isfile( file_path + xfile )

os.remove(xfile)

改用os.path.join

for xfile in result:
    fp = os.path.join(file_path, xfile)
    if os.path.isfile(fp):
        d1 = getTimeDifference(fp)
        if(d1.days >= 12):
            os.remove(fp)

此外,下面的行将返回当前工作目录中的所有文件,而不是file_path变量指定的路径

result = [i for i in glob.glob('*.{}'.format(extension))]

改成:

result = [i for i in glob.glob('{}*.{}'.format(file_path, extension))]


推荐阅读