我有一些文件中保存了日期,例如foo161108part.txt
,baarr161108part2.txt
,python141106part2.txt
到目前为止,我已经列出了目录:
directoryFiles = []
for name in os.listdir(os.getcwd()):
if name.endswith('.txt'):
files.append(name)
print(files)
有很多不同的日期不同的文件,我想看看有多少文件出现在同一个日期。
谢谢!
答案 0 :(得分:1)
如果 date 部分是在文件名中搜索的关键部分,请考虑以下方法:
import re
counts = {}
pattern = re.compile(r'^.*(\d{6}).*?$')
for f in os.listdir('text_files'):
m = re.match(pattern, f)
if m:
date_value = m.group(1)
counts[date_value] = counts[date_value]+1 if counts.get(date_value) else 1
print(counts)
输出:
{'161108': 2, '141106': 1}
至于正则表达式:
使用 re.compile()并保存生成的正则表达式对象 当表达式将被多次使用时,重用更有效 单个计划中的时间
答案 1 :(得分:0)
如果目的只是比较文件的内容,理想的方法是使用filecmp
模块。这个模块提供了filecmp.cmp()
方法:
比较名为f1和f2的文件,如果它们看起来相等则返回True,否则返回False。
示例:
>>> import filecmp
>>> filecmp.cmp('undoc.rst', 'undoc.rst')
True
>>> filecmp.cmp('undoc.rst', 'index.rst')
False
答案 2 :(得分:0)
您可以使用python的正则表达式和Counter类来实现此目的:
select * from mytable
where substr(my_date, 1, 4) in (
select to_char(to_number(to_char(sysdate, 'YYYY')) - (level-1)) yr
from dual
connect by level <= 3);
输出:
import re
from collections import Counter
files = ['foo161108part.txt','baarr161108part2.txt','python141106part2.txt']
dates = []
for f in files:
m = re.match(r"^.*(\d{6}).*\.txt$", f)
if m:
dates.append(m.group(1))
print dates
print Counter(dates)