Textract应该允许目录作为支持的文件类型,

ubof19bj  于 2个月前  发布在  其他
关注(0)|答案(5)|浏览(56)

就我所见,在选择文件时,目录不是一个选项。如果能有这样一个功能就更好了:

  1. 显示与某些扩展名匹配的目录;
  2. 在目录中递归搜索这些文件;
  3. 最后,将内容提取到一个单独的文件中。
    这在翻译网站等场景下会非常有用,例如将所有字符串提取到资源文件中。如果你觉得这个功能有意义,我们可以讨论一下。谢谢!
e5nszbig

e5nszbig1#

嗯...这个想法很有趣。我非常感谢你的建议。
目前,我倾向于不将此功能纳入textract。考虑到使用类似

#!/bin/bash
for filename in $(find /path/to/some/directory -name '*.html'); do
    textract $filename >> output.txt
done

的命令行工具或在python中使用类似glob2的方法轻松实现这一点,似乎没有必要将其嵌入到textract中。此包的目标是简化从任何文档类型中提取原始文本的界面,我希望在此过程中尽可能保持简单。
我会将这个问题暂时保留,以便其他人可以对此概念发表评论,分享其他有用的用例,或者提出其他实现方法。

at0kjp5o

at0kjp5o2#

在Unix哲学的精神下,我同意@deanmalmgren的观点。一个程序应该只做一件事,将命令链接在一起比向命令添加非必要的功能更可取。

toe95027

toe950273#

好的,我在这里问一个天真的问题,希望你们不介意给我一些启示。我在Python的for循环中尝试了你的脚本,很惊讶地发现我无法让它正常工作。这就是我来这里的原因。有人说某种内部for循环是“多余的”,我明白这一点,但为什么它不能在普通的Python for循环中工作呢?这一点我不明白。当然,完全有可能我只是做错了。不,那不可能。但是你的bash循环确实有效。所有输出都发送到一个文件,而不是为每个输入文件创建一个输出文件,但我已经弄清楚了这一点。感谢与我分享你的见解、智慧和经验!

xdnvmnnf

xdnvmnnf4#

@MalikRumi,你能提供一个例子吗?Python的for循环应该可以正常工作。

r8uurelv

r8uurelv5#

这段代码的目的是从指定路径中读取所有的.odt文件,并使用textract库提取其中的文本内容。然后将提取到的文本内容以及一些其他信息(如标题、时间等)存储到Entry模型中。

根据你提供的错误信息,问题出在无法找到某个文件。这可能是因为文件路径不正确或者文件确实不存在。你可以检查一下path变量是否设置正确,确保它指向包含.odt文件的目录。

另外,关于你提到的tag__tag='tagg',这里的tag__tag应该是一个属性,而不是方法。你应该将其更改为tags__tag='tagg'。以下是修改后的代码:

from os import listdir, environ
import textract
import django
environ['DJANGO_SETTINGS_MODULE'] = 'chronicle.settings'
django.setup()
from ktab.models import Entry

path = '/home/malikarumi/010417_odt_tests/'
filenames = listdir(path)
for filename in filenames:
    text = textract.process(os.path.join(path, filename), encoding='utf_8')
    Entry.objects.create(
        title=filename, content=text, chron_date='2018-01-05',
        clock='23:59:59', tags__tag='tagg')

请确保在运行此代码之前已经正确设置了文件路径和Django项目设置。

相关问题