Python 3.x 通过Python运行TreeTagger

Python 3.x 通过Python运行TreeTagger,python-3.x,treetagger,Python 3.x,Treetagger,我是编程新手,但我有Python3的基础知识,并且安装了treetagger,通过我的命令shell我可以创建POS标记文件 然而,我在一个文件夹中有427个文件,我正在尝试自动打开并通过Treetagger运行,我不太明白如何实现这一点。我目前的代码如下: import os import sys import subprocess import re rootdir = r"/Spanish_(ACTIV-es)_corpus/plain" 我想自动检查超过427个文件的文件夹,并对适当

我是编程新手,但我有Python3的基础知识,并且安装了treetagger,通过我的命令shell我可以创建POS标记文件

然而,我在一个文件夹中有427个文件,我正在尝试自动打开并通过Treetagger运行,我不太明白如何实现这一点。我目前的代码如下:

import os
import sys
import subprocess
import re

rootdir = r"/Spanish_(ACTIV-es)_corpus/plain"
我想自动检查超过427个文件的文件夹,并对适当的文件进行POS标记

我认为这需要下面的代码和包括子流程命令的代码的组合,才能让TreeTagger完成它的工作,我完全不知道如何使用它,但我试图从这里关于堆栈溢出的另一个问题的反馈中实现它

如何使电影成为treetagger在浏览文件夹中的文件时将pos标记的文件


那么:输出??我是否需要已经为输出创建了427个单独的文件,或者是否有一种方法可以使输出成为输入的修改标题,从而不会混淆输出。(在文件标题中,是元数据当前存储的位置)。

使用Python对文件进行标记是否有严格要求?如果没有,您可以使用shell轻松实现它,方法是在文件夹的文件上循环,在每个文件上运行TreeTagger,然后保存(正如您正确假设的那样)到具有不同名称的文件

例如,下面是一个包含3个文件的目录:

$ ls mydir/
1.txt 2.txt 3.txt
里面有一些西班牙文本

$ cat mydir/1.txt
Esto es una prueba.
然后您可以使用

  • shell命令列出您关心的所有文件(例如,以“.txt”结尾的所有文件)

    find mydir/-name“*.txt”

  • 循环
    查找
    的结果(使用反引号```),并在每个结果上运行TreeTagger的命令

    $for“find…”中的i;do tag_命令_使用_$i;done

  • (保存每个文件路径的变量
    $i

  • shell的重定向功能(
    )将TreeTagger的输出(您通常会在屏幕上看到)重定向到一个可以使用原始文件名正确命名的文件

    tag_命令$i>$i.taged

  • 在一行中,它看起来像这样:

    $ for i in `find mydir/ -name "*.txt"`; do cat $i | cmd/tree-tagger-spanish > $i.tagged; done
    
    完成后,新创建的文件将位于同一文件夹中:

    $ ls mydir/
    1.txt        1.txt.tagged 2.txt        2.txt.tagged 3.txt        3.txt.tagged
    
    $ cat mydir/1.txt.tagged
    Esto es ADV esto~es
    una ART un
    prueba  NC  prueba
    .   FS  .