繁体   English   中英

如果文件的最后修改日期是今天,如何将Excel文件导入Pandas?

[英]How do I import an Excel file to Pandas if the file's last modified date is today?

因此,我试图编写一个将excel文件导入到Pandas数据框的Python脚本(条件是文件是否在某个日期(例如今天)被修改):

import pandas as pd
import glob
import os
import datetime

def report():
    for x in glob.glob("../*.xlsx"):
        modx = os.path.getmtime(x)
        xmod = datetime.datetime.fromtimestamp(modx)
    if datetime.datetime.today() == xmod:
        return x

我考虑过直接从函数导入excel文件:

if datetime.datetime.today() == xmod:
    df = pd.read_excel(x)
    return df

尝试修改数据框(尝试导入之后)会产生以下结果:

  File "<ipython-input-56-e6fa18118137>", line 1, in <module>
df = pd.read_excel(report())

  File "..\excel.py", line 151, in read_excel
return ExcelFile(io, engine=engine).parse(sheetname=sheetname, **kwds)

  File "..\excel.py", line 196, in __init__
raise ValueError('Must explicitly set engine if not passing in'

ValueError: Must explicitly set engine if not passing in buffer or path for io.

无法对此进行过多挖掘。 我什至不确定是否需要定义一个函数。

  • 我是否可以直接从函数导入Pandas DataFrame? 还是将其分开?
  • 我将如何设置引擎?

首先,使用datetime.today().date() 这样可以确保使用xmod进行正确的比较。

其次,该glob循环令人困惑。 您确定要使用forif要使用相同的缩进级别吗? 还是if应该在for循环内? 无论哪种方式,都需要解决。

另外,请尝试不传递函数。 如错误所暗示的那样,显式传递路径或缓冲区。 否则,它会询问您要使用哪个引擎,这比您正在做的事情所花的时间还要多。

所有其他内容,只需订阅最佳编程/ Python实践即可。

In [1]: import pandas as pd
    ...: from datetime import datetime
    ...: import os

In [2]: def load_if_modified_today(xls):
   ...:     modx = os.path.getmtime(xls)
   ...:     xmod = datetime.fromtimestamp(modx)
   ...:     if datetime.today().date() == xmod.date():
   ...:         df = pd.read_excel(xls)
   ...:         return df

In [3]: e = 'trades.xlsx'
   ...: df = load_if_modified_today(e)
   ...: df.head()
Out[3]: 
           System Name  Symbol  Unit Position Entry Date Entry Time  \
0  TB Turtle FX Majors  EURUSD     1    Short 2014-12-02        Day   
1  TB Turtle FX Majors  EURUSD     1    Short 2014-12-05        Day   
2  TB Turtle FX Majors  EURUSD     1     Long 2014-12-10        Day   
3  TB Turtle FX Majors  EURUSD     1     Long 2014-12-16        Day   
4  TB Turtle FX Majors  EURUSD     1    Short 2014-12-17        Day   

   Entry Order Price  Stop Price   Risk%  Quantity  Entry Fill  
0             1.2420      1.2428  0.0024         6      1.2418  
1             1.2284      1.2297  0.0022         4      1.2283  
2             1.2447      1.2434  0.0017         3      1.2448  
3             1.2496      1.2486  0.0026         5      1.2499  
4             1.2385      1.2397  0.0022         4      1.2383  

我遇到了相同的ValueError:如果未传递io的缓冲区或路径,则必须显式设置引擎。 在将代码更改为:

data = pd.read_excel(R"D:\\file.xlsx")

有效。

我遇到了一个类似的问题,结果发现安装的不同python框架版本相互冲突。 我删除了其中一个(anaconda),保留并更新了纯Python2.7,所有内容均已修复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM