我需要在python代码中从文件名中获取日期。我找到了很多解决方案,但是从固定的名称和日期。但是我不知道文件的名称将是什么,日期正在更改。如何做到这一点?
我有一个代码是已知的文件名(当前日期),文件名为micro20230125.txt
import re
import os
from datetime import datetime
header = """#SANR0000013003;*;#CNR0010;*;#RINVAL-777.0;*;"""
current_timestamp = datetime.today().strftime('%Y%m%d')
input_file = "micro" + current_timestamp + ".txt"
output_file = os.path.splitext(input_file)[0] + ".zrxp"
with open(input_file, "r") as f:
first_line = f.readline().strip('\n')
text = re.search('(\d{6})', first_line).group(1)
text = header + "\n" + text + "\n"
with open(output_file, "w") as f:
f.write(text)
print(text)
`
但是我不需要当前日期。2我会得到一些随机日期的文件,那么我怎样才能从文件名中提取未知的日期呢?3怎样改变这个变量current_timestamp?
我试着用正则表达式但我搞砸了
编辑:不同代码,类似问题:
我在处理这些代码时意识到:python不知道name中的数字代表什么,所以为什么要把它们当作日期来处理呢?这些只是数字。事实上,我需要这些数字和完整的文件名一样长。所以我用了不同的代码。
import re
import os
def get_numbers_from_filename(filename):
return re.search(r'\d+', filename).group(0) #returns only numbers
for filename in os.listdir("my path"):
print (get_numbers_from_filename(filename))
def get_numbers_from_filename(filename):
return re.search(r"(.)+", filename).group(0) #returns all name
for filename in os.listdir("my path"):
print(get_numbers_from_filename(filename))
文件为:微20230104.txt
结果是:
result
现在,我想使用这个结果,不想打印它。无论我如何得到它,都会返回错误。
import re
import os
def get_numbers_from_filename(filename):
return re.search(r"(.)+", filename).group(0)
for filename in os.listdir("my path"):
print(get_numbers_from_filename(filename))
m = get_numbers_from_filename(filename)
output_file = os.path.splitext(m)[0] + ".zrxp"
with open(m, "r") as f:
first_line = f.readline().strip('\n')
text = re.search('(\d{6})', first_line).group(1)
text = header + "\n" + text + "\n"
with open(output_file, "w") as f:
f.write(text)
print(text)
但它显示错误error:there is no such file
怎么办?我做错了什么?
1条答案
按热度按时间yhived7q1#
那么,如果所有的文件都有格式'micro[YearMonthDay]. txt',你可以尝试这个解决方案:
使用你喜欢的解决方案并注解另一个。
测试:
1.测试文本文件
1.代码
1.结果
我希望我能帮上忙!:D