Логика в Disk Defragmantation & Disk Check

Запись массивов записей в виде CSV-файлов с заголовками требует немного больше работы.

Этот пример читает файл CSV с заголовком в первой строке, а затем записывает тот же файл.

import numpy as np

# Write an example CSV file with headers on first line
with open('example.csv', 'w') as fp:
    fp.write('''\
col1,col2,col3
1,100.1,string1
2,222.2,second string
''')

# Read it as a Numpy record array
ar = np.recfromcsv('example.csv')
print(repr(ar))
# rec.array([(1, 100.1, 'string1'), (2, 222.2, 'second string')], 
#           dtype=[('col1', '

Обратите внимание, что этот пример не рассматривает строки с запятыми. Чтобы рассмотреть кавычки для нечисловых данных, используйте пакет csv :

import csv

with open('out2.csv', 'wb') as fp:
    writer = csv.writer(fp, quoting=csv.QUOTE_NONNUMERIC)
    writer.writerow(ar.dtype.names)
    writer.writerows(ar.tolist())

5
задан Sauron 6 July 2009 в 07:46
поделиться

5 ответов

Для полноты картины, вот оболочка C # API для дефрагментации:

http://blogs.msdn.com/jeffrey_wall/archive/2004/09/13/229137.aspx

Дефрагментация с помощью этих API (должно быть) в наши дни очень безопасно. Вы не сможете повредить файловую систему, даже если захотите.

Коммерческие программы дефрагментации используют те же API.

7
ответ дан 18 December 2019 в 09:52
поделиться

Посмотрите Файлы дефрагментации на msdn, чтобы узнать о возможных помощниках API.

Вам следует внимательно подумать об использовании C # для этой задачи, поскольку это может привести к нежелательным накладным расходам при маршалинге в собственный Win32.

3
ответ дан 18 December 2019 в 09:52
поделиться

Если вы не знаете логику дефрагментации, и если вы не писали файловую систему самостоятельно, поэтому вы не можете авторитетно проверить ее на наличие ошибок, почему бы просто не запустить новые процессы? "дефрагментация" и "chkdsk"?

3
ответ дан 18 December 2019 в 09:52
поделиться

Марк Руссинович недавно написал статью Внутренняя дефрагментация диска Windows NT , которая дает подробные сведения. Если вы действительно хотите это сделать, я бы действительно посоветовал вам использовать встроенные средства дефрагментации. Более того, в недавних операционных системах я никогда не видел необходимости как пользователь даже заботиться о дефрагментации; это будет выполняться автоматически по расписанию, и специалисты по NTFS в MS определенно более умны в этом деле, чем вы (извините, но они делают это уже некоторое время, а вы нет).

3
ответ дан 18 December 2019 в 09:52
поделиться

Несмотря на свою важность, файловая система не больше, чем структура данных, которая отображает имена файлов в списки дисковых блоков. И отслеживает метаинформацию, такую ​​как фактическая длина файла и специальные файлы, в которых хранятся списки файлов (например, каталоги). Программа проверки диска проверяет согласованность структуры данных. То есть каждый блок диска должен быть свободен для размещения в файле или принадлежать одному файлу. Он также может проверять определенные случаи, когда набор дисковых блоков выглядит как файл, который должен находиться в каталоге, но не по какой-то причине.

Дефрагментация заключается в просмотре списков дисковых блоков, назначенных каждому файлу. Файлы обычно загружаются быстрее, если они используют непрерывный набор блоков, а не разбросанные по всему диску. И вообще вся файловая система будет работать лучше всего, если все используемые дисковые блоки ограничиваются одним непрерывным диапазоном диска. Таким образом, хитрость заключается в безопасном перемещении дисковых блоков для достижения этой цели без разрушения файловой системы.

Основная трудность здесь заключается в запуске этого приложения во время использования диска. Это возможно, но нужно быть очень, очень, очень осторожным, чтобы не допустить очевидной или очень незаметной ошибки и не уничтожить большую часть или все файлы. Легче работать с файловой системой в автономном режиме.

Другая трудность связана со сложностями файловой системы. Например, вы Было бы намного лучше создать что-то, что поддерживает FAT32, а не NTFS, потому что первая является гораздо более простой файловой системой.

Если у вас есть низкоуровневый блочный доступ и какой-то разумный способ решения проблем параллелизма (лучше всего справляется работая с файловой системой, когда она не используется), вы можете сделать это на C #, perl или на любом другом языке, который вам нравится.

НО БУДЬТЕ ОЧЕНЬ ОСТОРОЖНЫ. Ранние версии программы уничтожат целые файловые системы. Более поздние версии будут делать это, но только при неясных обстоятельствах. А если вы уничтожите их данные, пользователи станут очень сердиться и начать судебные процессы.

perl или любой другой язык, который вам нравится.

НО БУДЬТЕ ОСТОРОЖНЫ. Ранние версии программы уничтожат целые файловые системы. Более поздние версии будут делать это, но только при неясных обстоятельствах. А если вы уничтожите их данные, пользователи станут очень сердиться и начать судебные процессы.

perl или любой другой язык, который вам нравится.

НО БУДЬТЕ ОСТОРОЖНЫ. Ранние версии программы уничтожат целые файловые системы. Более поздние версии будут делать это, но только при неясных обстоятельствах. А если вы уничтожите их данные, пользователи станут очень сердиться и начать судебные процессы.

1
ответ дан 18 December 2019 в 09:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: