如何创建一个循环os.walk()来查找所有" .txt"文件并创建一个包含三个字段的输出文件.csv 目录,文件名,语言?
我可以获得文件名称&目录使用打印,但我不知道如何将它们放在csv中。
另外,我可以使用langdetect(from langdetect import detect
,detect("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
过滤文件
答案 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])