Форум сайта python.su
0
оброго времени суток! такая ситуация - хочу записать информацию в переменную а затем сохранить в файл. есть код -
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
Офлайн
6
Может как то так попробовать? В файл соответственно так же записывать.
for drive in c.Win32_LogicalDisk (): print "{0}: {1}".format(drive.Caption, DRIVE_TYPES[drive.DriveType])
Отредактировано Firik (Дек. 15, 2015 23:38:53)
Офлайн
0
Firik Спасибо но тут другая незадача появилась - (фото ) что не так не могу врубиться…
Прикреплённый файлы:
Безымянный.png (290,4 KБ)
Офлайн
568
“w” - это режим для записи, он стирает файл. Вам нужен режим добавления “а”.
И вообще, вы зря открываете и закрываете файл в цикле. Вынесите опен и клозе за пределы цикла, пусть он один раз откроется.
Отредактировано FishHook (Дек. 16, 2015 18:54:20)
Офлайн
0
FishHook
не помогает….. записывает только последнюю строку—- G: Compact Disc и все . может можно как-то кортеж преобразовать в строку или список или хоть во что нить ….
Офлайн
6
Igorsk
последний вариант кода в студию
Офлайн
1
Нет у вас кортежа. value и есть строка.
value = '{} {}'.format(a, b)
f = open('file name.txt', 'w') for i in blabla: pass f.close()
Офлайн
0
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
Офлайн
221
внимаааааательно смотрите что вы записываете в переменную 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()
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))
Офлайн
0
JOHN_16Ды я это понимаю ! я жалуюсь на свой недостаток знаний в программировании … не могу правильно объяснить программе что делать… спасибо большое !
Программа делает ровно то, что от нее Вы попросили.
Отредактировано Igorsk (Дек. 17, 2015 12:48:11)
Офлайн