Я пытаюсь найти пользовательские данные по папке с датами, в нескольких папках формат данных будет одинаковым.
После фильтрации данных по user
, Date
целесообразно создать папку с именем пользователя втот же путь и хранить данные в формате .txt
.
Я пытаюсь преобразовать формат .txt
в формат .csv
, но я не могу создать данные в CSV.
в текстовом файле. Формат данных подобен этому
02:01:2019:13:43:26:0.10,-0.02,-1.05,-11.88,140.12,-4.58,0.24,-1.89,0.55
Мне нужен вывод, как это с первой строкой, заполненной именем пользователя или идентификатором:
import os
import datetime
import glob
import re
my_dir = "/home/trail/example/file/"
user_pattern = "user ::[0-9]+"
data_read_pattern = "^[0-9]+:[0-9]+:[0-9]+:[0-9]+:[0-9]+:[0-9]+:(\-?)[0-9]+\.[0-9]+,(\-?)[0-9]+\.[0-9]+,(\-?)[0-9]+\.[0-9]+,(\-?)[0-9]+\.[0-9]+,(\-?)[0-9]+\.[0-9]+,(\-?)[0-9]+\.[0-9]+,(\-?)[0-9]+\.[0-9]+,(\-?)[0-9]+\.[0-9]+,(\-?)[0-9]+\.[0-9]+$"
def ensure_path(path):
if not os.path.exists(path):
print "Creating Path", path
os.makedirs(path)
os.chmod(path, 0o777)
for i in range(26,-1,-1):
cur_day = datetime.datetime.now() - datetime.timedelta(days=i)
cur_dir = my_dir + str(cur_day.year) + "/" + str(cur_day.month) + "/" + str(cur_day.day)
#print cur_dir
if os.path.exists(cur_dir):
all_files = glob.glob(cur_dir+"/dat*.txt")
all_files.sort(key=os.path.getmtime)
#print all_files
op_dir = cur_dir + '/op/'
ensure_path(op_dir)
new_file_pointers = {}
for file_path in all_files:
with open(file_path, 'r') as f:
cur_op = None
cur_f_p = None
for line in f:
if re.match(user_pattern, line):
cur_op = re.findall(r'\d+', line)[0]
if cur_op in new_file_pointers:
print "in if cur_op", cur_op
if cur_f_p:
cur_f_p.close()
cur_f_p = open(new_file_pointers[cur_op], "a+")
else:
print "in else cur_op", cur_op
if cur_f_p:
cur_f_p.close()
new_file_pointers[cur_op] = op_dir+str(cur_op)+".txt"
cur_f_p = open(new_file_pointers[cur_op], "a+")
if cur_f_p:
if re.match(data_read_pattern, line.rstrip()):
cur_f_p.write(line)
for i in range(26,-1,-1):
cur_day = datetime.datetime.now() - datetime.timedelta(days=i)
cur_dir = my_dir + str(cur_day.year) + "/" + str(cur_day.month) + "/" + str(cur_day.day)
#print cur_dir
if os.path.exists(cur_dir):
all_files = glob.glob(cur_dir+"/op/*.txt")
all_files.sort(key=os.path.getmtime)
print all_files