Код: Выделить всё
import docx
#funct to get text from doc
def getText(file_name):
try:
doc = Document(file_name)
fullText = []
for para in doc.paragraphs:
fullText.append(para.text)
return '\n'.join(fullText)
except:
print(doc.paragraphs)
print("Exception")
return
Код: Выделить всё
text = getText(file)
print(str(text))
Исключением, которое я получил во время отладки, является PackageNotFoundError, поэтому в коде я инкапсулировал функцию getText в попытке- кроме блока.
Я попробовал сохранить файлы локально, так как они расположены в удаленной папке Dropbox, и если я сохраню файлы локально и открою их с помощью слова, я обнаружил, что они пусты.
Код: Выделить всё
pth = os.path.abspath('files/' + fname.split('/')[-1]) #fname.split... is the dropbox .docx file name
if not os.path.isfile(pth): #check I have not already saved the file in older debugging
doc = Document()
doc.save(pth)
text = getText(pth)
Я рассматривал texttract, но использую Windows, а на другом ноутбуке с macOS я мог бы не удалось установить его.
Изменить: мне удалось загрузить содержимое файлов документов из Dropbox с помощью функции в документации API:
Код: Выделить всё
def download_file(dbx, path):
## path = '/%s/%s/%s' % (folder, subfolder.replace(os.path.sep, '/'), name)
## dest = '/%s/%s' % (folder, subfolder.replace(os.path.sep, '/'))
while '//' in path:
path = path.replace('//', '/')
## while '//' in dest:
## dest = dest.replace('//', '/')
with stopwatch('download'):
try:
md,res = dbx.files_download(path)
except dropbox.exceptions.HttpError as err:
#print('*** HTTP error', err)
return None
except dropbox.exceptions.ApiError:
#print('** API error', dropbox.exceptions.ApiError)
return None
with open(res.content, encoding='CP1252') as data_handle:
#data = res.content
s = str(data_handle)
s_data = StringIO(s)
#decode unreadable 0x90 byte
#with codecs.open(s_data, encoding='iso-8859-1') as s_data_handle:
dataframe = pd.read_html(s_data)
print(dataframe)
#print(len(data))
return data_handle
Однако я получаю ошибки декодирования:
Код: Выделить всё
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe2 in position 10: invalid continuation byte
Подробнее здесь: https://stackoverflow.com/questions/786 ... d-doc-file