如何从python目录中获取所有新文件?

问题描述 投票:-2回答:1

我有一个解析.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文件。

谢谢你的帮助!

python xml pandas glob sys
1个回答
0
投票

您的问题分为两部分:

  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')]

您可以循环创建日期为今天的文件。或者,您可以将已处理的文件移动到“已处理”目录。在任何情况下,您都不应该阅读已经处理过的文件。

第二部分,请参阅this question。 tl; dr是你应该附加到CSV文件,而不是每次从开始创建它。

© www.soinside.com 2019 - 2024. All rights reserved.