Здесь я генерирую массив в виде txt файла, я хочу, если нет данных, то он автоматически заменяется на ноль, как мне это сделать?
Объясните алгоритм моего кода:
Мото кода: Мой код извлекает значение из определенной папки, каждая папка содержит 7 файлов 'txt', которые генерируются одним пользователем, таким образом, несколькоПапка содержит несколько данных нескольких пользователей.
step1: Запустите 1-й цикл for и управляйте им, используя количество папок в определенной папке, а в переменной 'path' сохраняйте первый путь первой папки.
step2: Открыть путь и получить данные 7-текстового файла, используя 2nd для loop.after feats, закрыть 2-й для loop и выполнить остальной код.
step3: Конкатировать данные 7 txt-файлав одном 1d-массиве.
step4: создать 2d-массив, используя получение данных из 2 папок
step5: создать строку в 2d-массиве и вставить 1d-массив
import numpy as np
import os
import shutil
#variable that contain inicial path as string
f_path='Result'
#for control incriment row index of array with loop
array_control_var=1
#create a rarry for storing data of one user, By deufault value zero
main_f_array=np.zeros((1,123),int)
#first row of the array(main_f_array[0]) is label of each question
main_f_array[0] = np.array([21,22,23,241,242,243,244,245,246,247,248,249,2410,2411,251,252,253,254,255,256,257,
258,259,2510,2511,2512,2513,2514,2515,2516,2517,261,262,263,264,265,266,267,
268,269,2610,2611,2612,2613,2614,2615,2616,2617,31,32,33,34,35,36,37,38,39,
310,311,312,313,314,315,316,317,41,42,43,44,45,46,51,52,53,54,55,56,57,58,59,61,
62,63,64,65,66,67,68,69,610,611,612,613,614,615,616,617,618,619,620,621,71,72,
73,74,75,76,77,78,79,710,711,712,713,714,715,716,717,718,719,720,721,722])
#for feacth directory path
for (path,dirs,file) in os.walk(f_path):
if(path==f_path):
continue
#for count how many file exiest
file_c=0
#counting how many file exiext
file_c += len(file)
if file_c!=7:
#if there is not 7 file exiest then delete
shutil.rmtree(path)
continue
f_path_1= path +'\page_1.txt'
#Get data from page1 indivisualy beacuse there string type data exiest
pgno_1 = np.array(np.loadtxt(f_path_1, dtype='U', delimiter=','))
#only for page_2.txt
f_path_2= path +'\page_2.txt'
with open(f_path_2) as f:
str_arr = ','.join([l.strip() for l in f])
pgno_2 = np.asarray(str_arr.split(','), dtype=int)
#using loop feach data from those text file data type = int
for j in range(3,8):
#store file path using variable
txt_file_path=path+'\page_'+str(j)+'.txt'
#genarate a variable name that auto incriment with for loop
foo='pgno_'+str(j)
#pass the variable name as string and store value
exec(foo + " = np.array(np.loadtxt(txt_file_path, dtype='i', delimiter=','))")
#end for loop
#marge all array from page 2 to rest in single array in one dimensation
f_array=np.concatenate((pgno_2,pgno_3,pgno_4,pgno_5,pgno_6,pgno_7), axis=0)
#assing 1d array(f_array) in row of main_f_array, rwo inciment by array_control_var variable
main_f_array=np.insert(main_f_array, array_control_var, f_array, 0)
array_control_var+=1
#end for loop
print(main_f_array)