就我所见,在选择文件时,目录不是一个选项。如果能有这样一个功能就更好了:
e5nszbig1#
嗯...这个想法很有趣。我非常感谢你的建议。目前,我倾向于不将此功能纳入textract。考虑到使用类似
#!/bin/bash for filename in $(find /path/to/some/directory -name '*.html'); do textract $filename >> output.txt done
的命令行工具或在python中使用类似glob2的方法轻松实现这一点,似乎没有必要将其嵌入到textract中。此包的目标是简化从任何文档类型中提取原始文本的界面,我希望在此过程中尽可能保持简单。我会将这个问题暂时保留,以便其他人可以对此概念发表评论,分享其他有用的用例,或者提出其他实现方法。
at0kjp5o2#
在Unix哲学的精神下,我同意@deanmalmgren的观点。一个程序应该只做一件事,将命令链接在一起比向命令添加非必要的功能更可取。
toe950273#
好的,我在这里问一个天真的问题,希望你们不介意给我一些启示。我在Python的for循环中尝试了你的脚本,很惊讶地发现我无法让它正常工作。这就是我来这里的原因。有人说某种内部for循环是“多余的”,我明白这一点,但为什么它不能在普通的Python for循环中工作呢?这一点我不明白。当然,完全有可能我只是做错了。不,那不可能。但是你的bash循环确实有效。所有输出都发送到一个文件,而不是为每个输入文件创建一个输出文件,但我已经弄清楚了这一点。感谢与我分享你的见解、智慧和经验!
xdnvmnnf4#
@MalikRumi,你能提供一个例子吗?Python的for循环应该可以正常工作。
for
r8uurelv5#
这段代码的目的是从指定路径中读取所有的.odt文件,并使用textract库提取其中的文本内容。然后将提取到的文本内容以及一些其他信息(如标题、时间等)存储到Entry模型中。
textract
Entry
根据你提供的错误信息,问题出在无法找到某个文件。这可能是因为文件路径不正确或者文件确实不存在。你可以检查一下path变量是否设置正确,确保它指向包含.odt文件的目录。
path
另外,关于你提到的tag__tag='tagg',这里的tag__tag应该是一个属性,而不是方法。你应该将其更改为tags__tag='tagg'。以下是修改后的代码:
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项目设置。
5条答案
按热度按时间e5nszbig1#
嗯...这个想法很有趣。我非常感谢你的建议。
目前,我倾向于不将此功能纳入textract。考虑到使用类似
的命令行工具或在python中使用类似glob2的方法轻松实现这一点,似乎没有必要将其嵌入到textract中。此包的目标是简化从任何文档类型中提取原始文本的界面,我希望在此过程中尽可能保持简单。
我会将这个问题暂时保留,以便其他人可以对此概念发表评论,分享其他有用的用例,或者提出其他实现方法。
at0kjp5o2#
在Unix哲学的精神下,我同意@deanmalmgren的观点。一个程序应该只做一件事,将命令链接在一起比向命令添加非必要的功能更可取。
toe950273#
好的,我在这里问一个天真的问题,希望你们不介意给我一些启示。我在Python的for循环中尝试了你的脚本,很惊讶地发现我无法让它正常工作。这就是我来这里的原因。有人说某种内部for循环是“多余的”,我明白这一点,但为什么它不能在普通的Python for循环中工作呢?这一点我不明白。当然,完全有可能我只是做错了。不,那不可能。但是你的bash循环确实有效。所有输出都发送到一个文件,而不是为每个输入文件创建一个输出文件,但我已经弄清楚了这一点。感谢与我分享你的见解、智慧和经验!
xdnvmnnf4#
@MalikRumi,你能提供一个例子吗?Python的
for
循环应该可以正常工作。r8uurelv5#
这段代码的目的是从指定路径中读取所有的.odt文件,并使用
textract
库提取其中的文本内容。然后将提取到的文本内容以及一些其他信息(如标题、时间等)存储到Entry
模型中。根据你提供的错误信息,问题出在无法找到某个文件。这可能是因为文件路径不正确或者文件确实不存在。你可以检查一下
path
变量是否设置正确,确保它指向包含.odt文件的目录。另外,关于你提到的
tag__tag='tagg'
,这里的tag__tag
应该是一个属性,而不是方法。你应该将其更改为tags__tag='tagg'
。以下是修改后的代码:请确保在运行此代码之前已经正确设置了文件路径和Django项目设置。