Как получить все новые файлы из каталога с Python? - PullRequest
0 голосов
/ 18 мая 2018

У меня есть скрипт для разбора .xml файлов.Каждый день в моем каталоге появляются новые .xml файлы, и я хочу анализировать только новые.Я не знаю, как я могу получить только файлы новостей из моего каталога и проанализировать их с помощью моего скрипта.

Я использую код ниже, чтобы проанализировать все мои .xml файлы.

# coding: utf-8

from lxml import etree as ET
import pandas as pd
import numpy as np
import glob
import sys
import os

path = 'C:\Users\sky\Documents\Results'
#Read one xml file of Dedcoded directory

for filename in glob.glob(os.path.join(path, '*.xml')):
    try:
        tree = ET.parse(filename)
        root = tree.getroot()

        # Extract all data from tags

        data=[]
        for param in root.findall('./Book/Message/Prog//'):
            name = param.find('Name')
            value = param.find('Value')
            if name is not None:
                name =name.text
                if value is not None:
                    value =value.text
                    data.append([name, value])

        df_data = pd.DataFrame(data, columns=["Name", "Value"])
        df_data = pd.concat([pd.Series(v.values, name=k) for k, v in df_data.groupby('Name')['Value']], axis=1)

        # At the end I save my df_dat to a CSV file by this condition, if the file \
        #'all_data.csv' does not exist then create this file and add the date into with headers.

        if os.path.isfile('all_data.csv') is False: 
            df_data.to_csv('all_data.csv', mode='w', header=True, index=False) 
            print '\n', ' File Processed Successfully!', '\n'
        # And if it exist already then just append the result without adding the headers 

        else: 
            df_data.to_csv('all_data.csv', mode='a', header=False, index=False)
            print '\n', ' File Processed Successfully!', '\n'

    except:
        pass

Я запускаю этот код каждый день, и он занимает много времени, потому что он также анализирует старые .xml файлы.

Спасибо за помощь!

1 Ответ

0 голосов
/ 18 мая 2018

Ваш вопрос состоит из двух частей:

  1. Как найти файлы более новые, чем определенное время

  2. Как добавить толькоинформация в этих файлах

По первому вопросу есть несколько способов.

Здесь показано, как получить файлы и время создания в каталоге:

from glob import glob
import os
import pandas as pd
import datetime
[(f_name, datetime.datetime.fromtimestamp(os.path.getctime(f_name))) for f_name in glob('*.csv')]

Вы можете зацикливать файлы, даты создания которых сегодня.Кроме того, вы можете переместить обработанные файлы в «обработанный» каталог.В любом случае вам не следует читать файлы, которые вы уже обработали.

Вторую часть см. в этом вопросе .tl; dr в том, что вам необходимо добавить в файл CSV, а не создавать его каждый раз с самого начала.

...