langdetect python - 编写文件名,目录和语言的csv

时间:2017-03-27 19:57:31

标签: python csv

如何创建一个循环os.walk()来查找所有" .txt"文件并创建一个包含三个字段的输出文件.csv 目录,文件名,语言?

我可以获得文件名称&目录使用打印,但我不知道如何将它们放在csv中。 另外,我可以使用langdetect(from langdetect import detectdetect("001.txt")获取语言名称,但我仍然遇到问题。

实施例

Directory  Filename Language
/c/xx      001      en
/c/xx/y    001      fr

代码

import os
import glob

extension = '.txt'
os.chdir("/Desktop/Language_test")
result = [i for i in glob.glob('*.{}'.format(extension))]
print(result)

path=os.getcwd()
extension = '.txt'
for root, dirs_list, files_list in os.walk(path):
    for file_name in files_list:
        if os.path.splitext(file_name)[-1] == extension:
            file_name_path = os.path.join(root, file_name)
            print(file_name)
            print(file_name_path)   # This is the full path of 

过滤文件

1 个答案:

答案 0 :(得分:0)

如果您需要检查子目录中的文件以及当前目录,这样的事情将是很好的方法。

它使用os.walk遍历目录结构,fnmatch.fnmatch进行(简单)文件名匹配。

import csv
from fnmatch import fnmatch
try:
    from langdetect import detect
except ImportError:
    detect = lambda _: '<dunno>'
import os

rootdir = '.'  # current directory
extension = '.txt'
file_pattern = '*' + extension

with open('output.csv', 'w', newline='', encoding='utf-8') as outfile:
    csvwriter = csv.writer(outfile)

    for dirpath, subdirs, filenames in os.walk(os.path.abspath(rootdir)):
        for filename in filenames:
            if fnmatch(filename, file_pattern):
                lang = detect(os.path.join(dirpath, filename))
                csvwriter.writerow([dirpath, filename, lang])