3

我编写了一个程序来过滤包含从特定文件中提取位置和时间的文件。每个文件都包含一天的推文。

我想在一年的推文中运行这个程序,这将涉及迭代超过 365 个名称如下的文件夹:2011- - .tweets.dat.gz,星号代表完成文件名的数字,使其成为一年中每一天的日期。

基本上,我正在寻找将循环遍历 2011-01-01.tweets.dat.gz、2011-01-02.tweets.dat.gz、...、一直到 2011-12-31 的代码。推文.dat.gz。

我现在想象的是以某种方式告诉程序遍历名称为 2011-*.tweets.dat.gz 的所有文件,但我不确定这将如何工作或如何构建它,或者即使* 语法正确。

有小费吗?

4

2 回答 2

1

使用datetime模块:

>>> from datetime import datetime,timedelta
>>> d = datetime(2011,1,1)
while d < datetime(2012,1,1) :
    filename = "{}{}".format(d.strftime("%Y-%m-%d"),'.tweets.dat.gz')
    print filename
    d = d + timedelta(days = 1)
...     
2011-01-01.tweets.dat.gz
2011-01-02.tweets.dat.gz
2011-01-03.tweets.dat.gz
2011-01-04.tweets.dat.gz
2011-01-05.tweets.dat.gz
2011-01-06.tweets.dat.gz
2011-01-07.tweets.dat.gz
2011-01-08.tweets.dat.gz
2011-01-09.tweets.dat.gz
2011-01-10.tweets.dat.gz
    ...
    ...
2011-12-27.tweets.dat.gz
2011-12-28.tweets.dat.gz
2011-12-29.tweets.dat.gz
2011-12-30.tweets.dat.gz
2011-12-31.tweets.dat.gz
于 2013-07-08T21:35:18.007 回答
1

最简单的方法确实是使用 glob:

import from glob import iglob

for pathname in iglob("/path/to/folder/2011-*.tweets.dat.gz"):
   print pathname   # or do whatever
于 2013-07-08T22:02:36.670 回答