внимаааааательно смотрите что вы записываете в переменную 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))