Найти - Пользователи
Полная версия: Запись данных в переменную
Начало » Python для новичков » Запись данных в переменную
1 2
Igorsk
оброго времени суток! такая ситуация - хочу записать информацию в переменную а затем сохранить в файл. есть код -
import wmi
c = wmi.WMI ()
DRIVE_TYPES = {
  0 : "Unknown",
  1 : "No Root Directory",
  2 : "Removable Disk",
  3 : "Local Disk",
  4 : "Network Drive",
  5 : "Compact Disc",
  6 : "RAM Disk"
}
for drive in c.Win32_LogicalDisk ():
  print drive.Caption, DRIVE_TYPES[drive.DriveType]
при запуске печатает
C: Local Disk
D: Local Disk
E: Compact Disc
F: Compact Disc
G: Compact Disc   
все нормально, но когда я записываю информацию в переменную и потом пытаюсь вывести на экран информацию из переменной то получается такая вот штука
(u'G:', 'Compact Disc')
и все … не пойму в чем дело .
C: Local Disk
D: Local Disk
E: Compact Disc
F: Compact Disc
G: Compact Disc
это же не список, не словарь , не строка … это вроде если я не ошибаюсь кортеж но почему он в переменную не записывается ?заранее спасибо!
Firik
Может как то так попробовать? В файл соответственно так же записывать.
for drive in c.Win32_LogicalDisk ():
  print "{0}: {1}".format(drive.Caption, DRIVE_TYPES[drive.DriveType])
Igorsk
Firik Спасибо но тут другая незадача появилась - (фото ) что не так не могу врубиться…
FishHook
“w” - это режим для записи, он стирает файл. Вам нужен режим добавления “а”.
И вообще, вы зря открываете и закрываете файл в цикле. Вынесите опен и клозе за пределы цикла, пусть он один раз откроется.
Igorsk
FishHook
не помогает….. записывает только последнюю строку—- G: Compact Disc и все . может можно как-то кортеж преобразовать в строку или список или хоть во что нить ….
Firik
Igorsk
последний вариант кода в студию
dzh
Нет у вас кортежа. value и есть строка.
value = '{} {}'.format(a, b)

FishHook вам указал на проблему
f = open('file name.txt', 'w')
for i in blabla:
    pass
f.close()
Igorsk
dzh
Нет у вас кортежа.
это уже после так скажем форматирования -
'{} {}'.format
если прописать
print drive.Caption, DRIVE_TYPES[drive.DriveType]
то выводит кортеж
C: Local Disk
D: Local Disk
E: Compact Disc
F: Compact Disc
G: Compact Disc  

Firik
последний вариант кода в студию

import wmi
c = wmi.WMI ()
DRIVE_TYPES = {
  0 : "Unknown",
  1 : "No Root Directory",
  2 : "Removable Disk",
  3 : "Local Disk",
  4 : "Network Drive",
  5 : "Compact Disc",
  6 : "RAM Disk"
}
for drive in c.Win32_LogicalDisk ():
  value = u'{} {}'.format(drive.Caption, DRIVE_TYPES[drive.DriveType])
f = open('file name.txt', 'w')
for i in value:
  f.write(i)
  pass
f.close()

и все равно записывает только одну последнюю строку
G: Compact Disc
нихрена не понимаю …. где я туплю …
JOHN_16
внимаааааательно смотрите что вы записываете в переменную value - вы в цикле каждый раз обновляете значение, присваивая ей новую строку. Т.е. по выходу из цикла в переменной value хранится последнее значение полученное из c.Win32_LogicalDisk(). Во втором цикле вы проходитесь по строке(!) т.е. по каждому символу строки записывая его в файл.

Программа делает ровно то, что от нее Вы попросили.

Другое дело что вы сами хотите не этого. Вы наверняка хотите иметь переменную в которой бы присутствовали все значения из функции c.Win32_LogicalDisk(). Значения которой в последствие записать в файл.Вот:
import wmi
c = wmi.WMI ()
DRIVE_TYPES = {
  0 : "Unknown",
  1 : "No Root Directory",
  2 : "Removable Disk",
  3 : "Local Disk",
  4 : "Network Drive",
  5 : "Compact Disc",
  6 : "RAM Disk"
}
values = []
for drive in c.Win32_LogicalDisk():
  values.append(u'{} {}'.format(drive.Caption, DRIVE_TYPES[drive.DriveType]))
f = open('file name.txt', 'w')
for value in values:
  f.write(value + '\n')
f.close()

Ну а более python-way как то так:
import wmi
c = wmi.WMI ()
DRIVE_TYPES = {
  0 : "Unknown",
  1 : "No Root Directory",
  2 : "Removable Disk",
  3 : "Local Disk",
  4 : "Network Drive",
  5 : "Compact Disc",
  6 : "RAM Disk"
}
values = [u'{} {}'.format(drive.Caption, DRIVE_TYPES[drive.DriveType]) for drive in c.Win32_LogicalDisk()]
with open('file name.txt', 'w') as f:
    f.write('\n'.join(values))


Igorsk
JOHN_16
Программа делает ровно то, что от нее Вы попросили.
Ды я это понимаю ! я жалуюсь на свой недостаток знаний в программировании … не могу правильно объяснить программе что делать… спасибо большое !
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB