python - 使用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
解决方案
看起来问题是您的文件路径的创建方式:
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))]
推荐阅读
- algorithm - 去块方法如果我们可以控制“块”工件出现的位置
- c# - Else vs new IF - 可读性和性能
- github - 从 Github 历史记录中完全删除文件,包括 API 历史记录
- python-sphinx - Sphinx 错误 - 警告“列表表”宽度与表中的列数不匹配 (1)
- java - 如何为 DAO 实现创建 Spring Boot 共享库
- javascript - WORDPRESS 错误:未捕获的类型错误:无法读取未定义的属性“替换”
- matlab - Matlab中的顽固想象
- java - 如何在 Firebase 中提供默认数据
- javascript - 在反应中将对象绑定为组件状态键的值的正确方法
- go - 展平结构并将其转换为 map[string]string