【问题标题】:Selecting files based on creation date根据创建日期选择文件
【发布时间】:2019-06-24 20:46:24
【问题描述】:

我有一个名为 myclientcard 的文件夹,它在该子文件夹中有 69 个子文件夹,我们有许多子文件夹,它必须转到错误文件夹,在错误文件夹中它有许多 txt 文件,所以我想要那些文本文件的内容使用日期格式 17/01/201924/01/2019 指定的所有 69 个文件夹内的错误并将其转换为 excel 文件

import os
import numpy as np
from os import listdir
from os.path import join
import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
mypath = "D:\myclientcard"
files = [join(mypath,f) for f in listdir(mypath) if '.txt' not in f]
for file in files:
    path = file
    filename =[join(path,f) for f in listdir(path) if 'ERROR' in f]
    #print(filename)
    for text_file_path in filename:
        file_path = text_file_path
        textfiles = [join(file_path,f) for f in listdir(file_path) if '.txt' in f]
        for files in textfiles:
                reading_files = open(files,'r')
                read = reading_files.read()
                writting_files = open('result.txt','a')
                wr = writting_files.write(read)
                read_files = pd.read_csv('result.txt',delim_whitespace='')
                writer = ExcelWriter('output.xlsx')
                read_files.to_excel(writer,'Sheet1',index=false)
                writer.save()
                reading_files.close()
                writting_files.close()

【问题讨论】:

  • 你确定发送代码请稍候
  • 检查this。您的要求主要在提供的链接中得到回答。
  • @vmaroli 抱歉,这不符合我的限制
  • @Venkatesh Garnepudi 你能帮我添加一行代码,根据日期格式提取文件
  • 如果filename,textfiles 正常,一切都可以完成。如何订购?如果文件名中有时间戳,则可以完成。一旦检查这个stackoverflow.com/a/36318986/6113743

标签: python


【解决方案1】:

使用来自herehere 的答案。假设您在 Windows 平台上。

import os
import numpy as np
from os import listdir
from os.path import join
# Importing datetime module
from datetime import datetime as dt
import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
mypath = "D:\myclientcard"

# Add start date here
start_date = dt.strptime('17/01/2019', '%d/%m/%Y')
# Add end date here
end_date = dt.strptime('24/01/2019', '%d/%m/%Y')
files = [join(mypath,f) for f in listdir(mypath) if '.txt' not in f]
for file in files:
    path = file
    filename =[join(path,f) for f in listdir(path) if 'ERROR' in f]
    #print(filename)
    for text_file_path in filename:
        file_path = text_file_path
        textfiles = [join(file_path,f) for f in listdir(file_path) if '.txt' in f]
        # Filtering on the basis of date
        textfiles = [f for f in textfiles if ((os.path.getctime(f) >= start_date) and (os.path.getctime(f) <= end_date))]
        for files in textfiles:
                reading_files = open(files,'r')
                read = reading_files.read()
                writting_files = open('result.txt','a')
                wr = writting_files.write(read)
                read_files = pd.read_csv('result.txt',delim_whitespace='')
                writer = ExcelWriter('output.xlsx')
                read_files.to_excel(writer,'Sheet1',index=false)
                writer.save()
                reading_files.close()
                writting_files.close()

另外,请考虑优化您的代码。也可以试试os.walk,它有时会很有用!

【讨论】:

  • 它给我一个这样的错误你能帮我吗,start_date = dt.strptime('17/01/2019', '%d/%m/%Y').total_seconds() AttributeError: 'datetime.datetime' 对象没有属性 'total_seconds'
  • 请接受这就是您要找的答案。
  • 它再次给我一个错误,你能帮帮我吗。textfiles = [f for f in textfiles if ((os.path.getctime(f) - start_date) >= 0 and (os. path.getctime(f) - end_date)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-08
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多