我正在尝试将文件粘贴从一个文件夹复制到另一个文件夹。但是,此文件每天都会生成,因此文件名会更改。我想创建一个reg表达式,以标识文件夹中的正确文件。我对正则表达式不熟悉,所以也许我可以获得一些提示?
复制文件的文件路径如下: G:\交易报告_Daily1_FI_2000_2018-07-24-06-40-42.xlsx
这部分在所有文件中都相同。
交易报告_每日 这部分发生了变化。
2018-07-24-06-40-42.xlsx
我认为我可以使用datetime模块来帮助确定正确的日期。但是,日期(-06-40-42)之后的数字是随机的。
import re, os
from datetime import date
today = date.today()
RNRegex = re.compile(r'Rolfe and Nolan Trade Reports_Daily1_FI_2000_' + str(today) +'-\d\d-\d\d-\d\d.xlsx')
#os.listdir(r'G:RLN FI Reports')
for RNfile in os.listdir(r'G:\RLN FI Reports'):
mo = RNRegex.search(RNfile)
if mo == None:
continue
else:
print(mo)
EDIT:
My Output now
runfile('C:/Users/z000xxx/.spyder-py3/untitled21.py',
wdir='C:/Users/z000xxc/.spyder-py3')
<_sre.SRE_Match object; span=(0, 69), match='Rolfe and Nolan Trade
Reports_Daily1_FI_2000_2018>
答案 0 :(得分:0)
这应该可以解决问题:
today = date.strftime(date.today(), "%Y-%m-%d")
RNRegex = re.compile("Rolfe and Nolan Trade Reports_Daily1_FI_2000_" + today + "(-\d{2}){3}\.xlsx")
另一方面,如果要获取文件名,则无法打印search
的结果,则需要使用print(mo.group(0))
我不得不使用date.strftime
来格式化date.today
,以使其有时不将月份和日期打印为一位数字
编辑:仅匹配今天的文件
答案 1 :(得分:-1)
您可以简单地列出文件夹中的内容,然后以“ Rolfe and Nolan Trade Reports_Daily”开头的文件进行移动,而无需使用任何正则表达式。看起来像这样:
import os
files = os.listdir('G:\RLN FI Reports')
for f in files:
if f.startswith('Rolfe and Nolan Trade Reports_Daily'):
# move the file wherever you want
答案 2 :(得分:-1)
您也可以使用glob.glob('G:\Path\To\Files\Keywords_*.ext')
。行为类似于Windows命令dir
,星号为贪婪字符。
示例:glob
>> import glob
>> glob.glob('C:\Windows\*.dll')
['C:\\Windows\\EvtMessage.dll',
'C:\\Windows\\RtlExUpd.dll',
'C:\\Windows\\twain.dll',
'C:\\Windows\\twain_32.dll']
示例:窗口命令
C:\>dir /B C:\Windows\*.dll
EvtMessage.dll
RtlExUpd.dll
twain.dll
twain_32.dll
在此示例中,我没有在文件名中使用关键字。您可能要使用Rolfe and Nolan Trade Reports_Daily1_FI_2000_
。