Видалити формат файлів і перевірити формат сумісності

Іноді необхідно визначити формат документа перед відкриттям, оскільки розширення файлу не гарантує, що вміст файлу доречно. Наприклад, відомо, що кристалічні звіти часто виводяться документи у форматі RTF, але дають їм розширення .doc.

Aspose.Words дає можливість отримати інформацію про тип файлу, щоб уникнути виключення, якщо ви не впевнені, що фактичний зміст файлу є.

Видалити формат файлів без виключення

Коли ви працюєте з декількома документами в різних форматах файлів, вам може знадобитися відокремити ці файли, які можуть бути оброблені Aspose.Words від тих, хто не може. Ви також можете дізнатися, чому деякі документи не можуть бути оброблені.

Якщо ви спробуєте завантажити файл в файл Document об’єкт і Aspose.Words не може розпізнати формат файлу або формат не підтримується, Aspose.Words викине виняток. Ви можете зловити ті винятки і проаналізувати їх, але Aspose.Words також надає detect_file_format метод, який дозволяє нам швидко визначити формат файлів без завантаження документа з можливими винятками. Цей метод повертає FileFormatInfo об’єкт, який містить інформацію про тип файлу.

Перевірити формат файлів сумісність

Ми можемо перевірити формат сумісності всіх файлів у вибраній папці та сортувати їх за форматом у відповідні підпапки.

З тих пір, як ми працюємо з вмістом в папці, перше, що нам потрібно зробити, це зібрати всі файли в цій папці за допомогою папки Список метод методу з модуль.

Приклад наступного коду показує, як отримати список всіх файлів в папці:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
fileList = (file for file in os.listdir(docs_base.my_dir)
if (os.path.isfile(os.path.join(docs_base.my_dir, file)) and not file.endswith("Corrupted document.docx")))

Коли зібрані всі файли, решта роботи виконується detect_file_format метод, який перевіряє формат файлу.

Наприклад, наступний код показує, як ітерувати над зібраним переліком файлів, перевірити формат кожного файлу та переміщати кожен файл у відповідну папку:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
supported_dir = docs_base.artifacts_dir + "Supported"
unknown_dir = docs_base.artifacts_dir + "Unknown"
encrypted_dir = docs_base.artifacts_dir + "Encrypted"
pre97_dir = docs_base.artifacts_dir + "Pre97"
# Create the directories if they do not already exist.
if not os.path.exists(supported_dir):
os.makedirs(supported_dir)
if not os.path.exists(unknown_dir):
os.makedirs(unknown_dir)
if not os.path.exists(encrypted_dir):
os.makedirs(encrypted_dir)
if not os.path.exists(pre97_dir):
os.makedirs(pre97_dir)
fileList = (file for file in os.listdir(docs_base.my_dir)
if (os.path.isfile(os.path.join(docs_base.my_dir, file)) and not file.endswith("Corrupted document.docx")))
for fileName in fileList:
name_only = fileName
fileName = os.path.join(docs_base.my_dir, name_only)
print(name_only)
info = aw.FileFormatUtil.detect_file_format(fileName)
lf = info.load_format
# Display the document type
if lf == aw.LoadFormat.DOC:
print("\tMicrosoft Word 97-2003 document.")
elif lf == aw.LoadFormat.DOT:
print("\tMicrosoft Word 97-2003 template.")
elif lf == aw.LoadFormat.DOCX:
print("\tOffice Open XML WordprocessingML Macro-Free Document.")
elif lf == aw.LoadFormat.DOCM:
print("\tOffice Open XML WordprocessingML Macro-Enabled Document.")
elif lf == aw.LoadFormat.DOTX:
print("\tOffice Open XML WordprocessingML Macro-Free Template.")
elif lf == aw.LoadFormat.DOTM:
print("\tOffice Open XML WordprocessingML Macro-Enabled Template.")
elif lf == aw.LoadFormat.FLAT_OPC:
print("\tFlat OPC document.")
elif lf == aw.LoadFormat.RTF:
print("\tRTF format.")
elif lf == aw.LoadFormat.WORD_ML:
print("\tMicrosoft Word 2003 WordprocessingML format.")
elif lf == aw.LoadFormat.HTML:
print("\tHTML format.")
elif lf == aw.LoadFormat.MHTML:
print("\tMHTML (Web archive) format.")
elif lf == aw.LoadFormat.ODT:
print("\tOpenDocument Text.")
elif lf == aw.LoadFormat.OTT:
print("\tOpenDocument Text Template.")
elif lf == aw.LoadFormat.DOC_PRE_WORD60:
print("\tMS Word 6 or Word 95 format.")
elif lf == aw.LoadFormat.UNKNOWN:
print("\tUnknown format.")
if info.is_encrypted:
print("\tAn encrypted document.")
shutil.copyfile(fileName, os.path.join(encrypted_dir, name_only))
else:
if lf == aw.LoadFormat.DOC_PRE_WORD60:
shutil.copyfile(fileName, os.path.join(pre97_dir, name_only))
elif lf == aw.LoadFormat.UNKNOWN:
shutil.copyfile(fileName, os.path.join(unknown_dir, name_only))
else:
shutil.copyfile(fileName, os.path.join(supported_dir, name_only))

Файли переміщуються в відповідні підпапки з використанням Файли метод методу Зареєструватися модуль.

На прикладі вище використовуються наступні файли. Назва файлу зліва і його опис справа:

Group Файли Вхідний документ Тип
Підтримка форматів файлів Тест файл (Doc).doc Microsoft Word 95/6.0 або Microsoft Word 97 – 2003 документ.
Тестувати файлDot.dot Microsoft Word 95/6.0 або Microsoft Word 97 – 2003 шаблон.
Тест файл (Docx).docx Офіс Відкритий XML-розробка ML документ без макросів.
Файл тесту (Docm).docm Офіс Відкритий XML-розробка ML документ з макросом.
Тест файл (Dotx).dotx Офіс Відкритий XML-розробка ML шаблон.
Тест файл (Dotm).dotm Офіс Відкритий XML-розробка ML шаблон з макросом.
English, Українська, Français. FlatOPC OOXML Документ.
Тест файл (RTF).rtf Багатий текст Формат документа.
English, Українська, Français. Microsoft Word 2003 Словообробка ML документ.
English, Українська, Français. HTML документ.
JavaScript licenses API Веб-сайт Go1.13.8 MHTML (Web архів) документ.
Тест файл (Odt).odt OpenDocument Text (OpenOffice Writer).
Тест файл (Ott).ott Шаблон документа OpenDocument.
Тест файл (DocPreWord60).doc Microsoft Word 2.0 документ.
Зашифровані документи Файл тесту (Enc).doc Зашифрований Microsoft Word 95/6.0 або Microsoft Word 97 – 2003 документ.
Тест файл (Enc).docx Зашифрована Office Open XML Wordprocessing ML документ.
Не підтримується формати файлів Файл тесту (JPG). й Файл зображень JPEG.