Как добавить имя строки и добавить имя файла в первых строках CSV из данных txt файла, используя Python? - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь найти пользовательские данные по папке с датами, в нескольких папках формат данных будет одинаковым.

После фильтрации данных по 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

Мне нужен вывод, как это с первой строкой, заполненной именем пользователя или идентификатором:
I need output Like this with first Rows fill with user-name or id

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
...