如何在使用os.walk()时获取“创建日期”和“修改日期”

时间:2019-04-12 22:49:38

标签: python pandas

我的公司希望从以前的将其存储在Engineering Folder 的心态过渡到PDM。我编写了一个脚本,它将遍历目录并记录根目录,目录和文件。

我已经能够遍历该目录并执行我想对根目录,目录和文件执行的操作,并且可以导出/排序/不管数据是什么。但是我希望能够获得创建日期st_ctime和修改日期st_mtime。我已经找到了可以在单个目录中进行在线处理的解决方案,但是我想将其实施到当前的os.walk()中。

我的目标是,就像我对根,目录和文件所做的那样,是要获取ctime和mtime并将其附加到可以连接到数据帧中的列表中,然后根据需要进行操作。我只是不知道如何获得它。

下面是我的代码。如何获得ctimemtime并将其附加到适当的列表中?

编辑:我正在使用Windows 10

global path_to_crawl
self.c = 0
self.roots_list = ['Roots']
self.dirs_list = ['Dirs']
self.files_list = ['Files']
self.ctime_list = ['Date Created']
self.mtime_list = ['Date Modified']
self.selection_to_output_df = pd.DataFrame({})

for (root, dirs, files) in os.walk(path_to_crawl):
    self.roots_list.append(root)
    self.dirs_list.append(dirs)
    self.files_list.append(files)
    ### HOW TO GET ctime AND APPEND IT TO self.ctime_list? ###
    ### HOW TO GET mtime AND APPEND IT TO self.mtime_list? ###
    self.c += 1

roots_df = pd.DataFrame({'Roots': self.roots_list[1:]})
self.selection_to_output_df = pd.concat([self.selection_to_output_df, roots_df], axis=1)
dirs_df = pd.DataFrame({'Dirs': self.dirs_list[1:]})
self.selection_to_output_df = pd.concat([self.selection_to_output_df, dirs_df], axis=1)
files_df = pd.DataFrame({'Files': self.files_list[1:]})
self.selection_to_output_df = pd.concat([self.selection_to_output_df, files_df], axis=1)

2 个答案:

答案 0 :(得分:1)

您可能想致电os.stat。像

stats = [os.stat(os.path.join(root, file)) for file in files]
self.ctime_list.append([stat.st_ctime for stat in stats])
self.mtime_list.append([stat.st_mtime for stat in stats])

答案 1 :(得分:0)

我发现了这一点,我在网上找到了一个示例,并对其进行了一些调整以适合我的代码:

global path_to_crawl
self.c = 0
self.files_list = ['File Path']
self.ctime_list = ['Date Created']
self.mtime_list = ['Date Modified']
self.selection_to_output_df = pd.DataFrame({})

for root, _, filenames in os.walk(path_to_crawl):
    for filename in filenames:
        file_path   = root + '/' + filename
        created     = os.path.getctime(file_path)
        modified    = os.path.getmtime(file_path)
        self.files_list.append(file_path)
        self.ctime_list.append(time.ctime(created))
        self.mtime_list.append(time.ctime(modified))                               
        self.c += 1

files_df = pd.DataFrame({'File Path': self.files_list[1:]})
self.selection_to_output_df = pd.concat([self.selection_to_output_df, files_df], axis=1)
created_df = pd.DataFrame({'Date Created': self.ctime_list[1:]})
self.selection_to_output_df = pd.concat([self.selection_to_output_df, created_df], axis=1)
modified_df = pd.DataFrame({'Date Modified': self.mtime_list[1:]})
self.selection_to_output_df = pd.concat([self.selection_to_output_df, modified_df], axis=1)
self.all_files_list = []
for sublist in self.files_list[1:]:
    for item in sublist:
        self.all_files_list.append(item)
return self.selection_to_output_df