我有一个包含50个子文件夹的数据集,每个子文件夹都有20-30个没有扩展名的文件。我想要做的是标记每个子文件夹的文件中的文本,并将其写入带有子文件夹名称的文件中。例如; 假设subfolder1有25个文件,我想将这25个文件一起标记化,然后将其写入名为“ subfolder1”的文件中。我想对主文件夹中的所有子文件夹都这样做。
我已经尝试了部分code,但由于无法读取文件夹,因此出现PermissionError。
mainfolder="path\\to\\mainfolder"
def ls(path):
return [os.path.join(path, item) for item in os.listdir(path)]
def load_file_sents(path):
return [sent.lower()
for sent in tokenize.sent_tokenize(open(path).read())]
def load_collection_sents(path):
sents = []
for f in ls(path):
sents.extend(load_file_sents(f))
return sents
def get_sentences(path):
""" loads sentences from the given path (collection or file) """
sents = []
try:
# treat as a single file
open(path).read()
sents = load_file_sents(path)
except IOError:
# it's a directory!
sents = load_collection_sents(path)
return sents
def get_toks(path):
return [tokenize.word_tokenize(sent) for sent in get_sentences(path)]
get_toks(mainfolder)
这是它给出的错误:
PermissionError Traceback (most recent call last)
<ipython-input-52-a6f316499b2c> in get_sentences(path)
37 # treat as a single file
---> 38 open(path).read()
39 sents = load_file_sents(path)
PermissionError: [Errno 13] Permission denied:
我尝试将前两个功能合并为一个,并确保它将读取文件,但是这次它只是返回了第一个子文件夹的第一个文件的标记。如果您知道如何解决此问题或更好的解决方法,将不胜感激!谢谢。
答案 0 :(得分:0)
尝试从 current
和 sub-folders
中获取所有文件的内容strong>使用以下命令
find . -type f -exec cat {} +
使用Subprocess.check_output
将输出重定向到变量,然后对该变量执行标记化。