awilice
Апрель 29, 2011 15:01:48
Прошу помочь в решении следующей задачки:
def rand_Disk():
import random
n=1
while n<2:
n=n+1
id1=0
while id1<10:
id1=id1+1
Size_Gb= random.randint(100,2000)
Write_err= random.randint(0, 50)
Read_err= random.randint(0,50)
Temp_C= random.randint(30,80)
Disk_name=random.choice()
print(id1,Size_Gb,Write_err,Read_err,Temp_C,Disk_name)
DiskRD=open('DiskRandData.txt','w')
print (DiskRD)
DiskRD.writelines('%s %%\n,%s %%\n,%s %%\n,%s %%\n,%s %%\n,%s\n' % (id1, Size_Gb, Write_err, Read_err, Temp_C,Disk_name))
DiskRD.close()
после выполнения в интерпритаторе rand_Disk() выводится:
1 313 3 47 34 12323
2 1610 24 1 66 qweqwe1212
3 950 15 15 31 qeqe1212
4 796 15 34 57 qwqe2323
5 269 29 11 51 qweqwe1212
6 883 44 35 35 qwqe2323
7 941 3 12 61 qeqe1212
8 1238 20 3 58 qeqe1212
9 1841 7 14 53 qweqwe1212
10 1283 26 20 44 qweqwe1212
но в соответствующий файл 'DiskRandData.txt записывается почему- то только последняя строка и больше ничего.
Заранее спасибо=))
awilice
Апрель 29, 2011 15:03:26
Вот вопрос в том. как записать туда все сгенерированные значения)
awilice
Май 2, 2011 17:35:29
Вот спасибо большое!!!все записывается!)))
единственный вопросик:так как все сгенерированные данные пишутся в один столбец, возможно ли формирование словаре из такого файла?
Jenyay
Май 2, 2011 22:21:34
Не понял, что Вы имеете в виду под “формирование словаря”?
awilice
Май 4, 2011 15:13:17
Мне нужно сгенерированные значения поместить в Oracle.
Перед этим идет запись в файл, потом создание словарей из заданных значений,( т. к командой insert с помощью cx_Oracle можно добавлять в базу только словари)
А уже третьим этапом будет помещение этих самых словарей в базу.
Строку :“ DiskRD.write('%s %%\n,%s %%\n,%s %%\n,%s %%\n,%s %%\n,%s\n' % …” я сократила до DiskRD.write('%s %%,%s %%,%s %%,%s %%,%s %%,%s\n' % чтобы в файле получился своеобразный массив(или табличка)
1 %,852 %,33 %,34 %,57 %,12323
2 %,593 %,35 %,3 %,48 %,qeqe1212
3 %,1085 %,21 %,22 %,35 %,qeqe1212
4 %,1928 %,49 %,38 %,45 %,qwqe2323
5 %,830 %,16 %,45 %,45 %,qwqe2323
6 %,435 %,31 %,30 %,57 %,qeqe1212
7 %,1482 %,4 %,8 %,64 %,12323
8 %,1063 %,42 %,25 %,74 %,12323
9 %,1536 %,20 %,37 %,71 %,qeqe1212
10 %,1656 %,2 %,28 %,77 %,qeqe1212
Вот собственно вопрос. мне нужно составить теперь словари типа dict1={'d1':1, ‘Size_Gb’:852, ‘Write_err’:33, ‘Read_err’:34, ‘Temp_C’:57,'Disk_name':'12323'} и.т.д для каждой строки…
И кстати, знаки процента “%” тоже занесутся в словарь? а то они в самой базе не нужны.Пробовала от них избавиться, вот не знаю как…=(
awilice
Май 4, 2011 15:15:28
Касательно формирования словарей. вот что у меня получилось:
def extract_data():
infile=open('DiskRandData.txt','r')
lines=infile.readlines()
for line in lines:
a=line.split()
Disks =
print( mydict=dict((Disks,line) for i in range(len(line))))
infile.close()
При выполнении интерпритатор пишет ошибку: IndexError: list index out of range…
Буду признательна за совет, заранее спасибо! =)
pyuser
Май 5, 2011 09:08:15
для файла, содержимое которого приведено в посте 7:
defextract_data():
names = ("id1", "Size_Gb", "Write_err", "Read_err", "Temp_C", "Disk_name")
with open("DiskRandData.txt", "rb") as f:
result = [dict(zip(names, (x for x in line.strip().split(" %,")))) for line in f]
return result
awilice
Май 5, 2011 15:47:36
Спасибо, но у меня почему- то при выполнении кода:
def extract_data():
names = (“id1”, “Size_Gb”, “Write_err”, “Read_err”, “Temp_C”, “Disk_name”)
with open(“DiskRandData.txt”, “rb”) as f:
result =
return result
python 2.7 выдает ошибку:
TypeError: Type str doesn't support the buffer API