如何在Windows计算机中使用python删除文件夹和子文件夹中的文件?

时间:2018-07-15 16:48:44

标签: python windows python-2.7

我想删除所有一天以上的文件,但隐藏文件

我尝试了以下代码,但似乎它也尝试删除隐藏文件,如何修改它以便删除所有文件但不删除隐藏文件?

import os
import time

current_time = time.time()

for f in os.listdir():
    creation_time = os.path.getctime(f)
    if (current_time - creation_time) // (24 * 3600) >= 1:
        os.unlink(f)
        print('{} removed'.format(f))

如果是linux,我本来可以做到的,

if not f.startswith('.'):

我已经浏览了以下链接:https://bitbucket.org/aafshar/pida-main/src/tip/pida/services/filemanager/filemanager.py

我可能不太了解。一个更简单的代码将不胜感激。

1 个答案:

答案 0 :(得分:0)

此代码用于Windows文件系统,我没有检查unlink部分(这是正确的,我的假设):代码在代码注释中进行了说明。 btw 24 * 3600 == 86400(以秒为单位的24小时)

import os
import time

import win32file
import win32con

from datetime import datetime

#convert float to datetime obj, current time
current_time = datetime.strptime(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())),'%Y-%m-%d %H:%M:%S')

for f in os.listdir():
    #file's time to datetime object
    creation_time = datetime.strptime(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(os.path.getctime(f))),'%Y-%m-%d %H:%M:%S')
    #subtract both the time -->timedelta object
    z= current_time - creation_time

    #get windows attribute for the file
    file_flag = win32file.GetFileAttributesW(f)
    #check the attribute value for files in windows, for hidden files the attribute should be '2'
    is_hidden = file_flag & win32con.FILE_ATTRIBUTE_HIDDEN

    if ((z.seconds >= 86400) and (is_hidden != 2)):  
        os.unlink(f)
        print('{} removed'.format(f))

windows文件系统代码参考:link