我试图将列表中的元素指定为目录中某些文件的名称,到目前为止,我创建了一个函数,可以从目录中恢复每个文件的名称并在列表中返回它们:
def retrive(directory_path):
path_names = []
for filename in sorted(glob.glob(os.path.join(directory_path, '*.pdf'))):
retrieved_files = filename.split('/')[-1]
path_names.append(retrieved_files)
print (path_names)
上面的函数以列表形式返回每个文件的名称,然后我将文件写入另一个目录,如下所示:
^{pr2}$最后,我的问题是:如何将path_names
的每个元素指定为每个文件的名称?,类似于这条线:
path = os.path.join(new_dir_path, "list%d.txt" % i)
我还尝试使用format()
函数。但是我仍然不能为每个文件指定正确的名称。在
以下是全文:
def transform_directoy(input_directory, output_directory):
import codecs, glob, os
from tika import parser
all_texts = []
for filename in sorted(glob.glob(os.path.join(input_directory, '*.pdf'))):
parsed = parser.from_file(filename)
texts = parsed['content']
all_texts.append(texts)
for i , a_list in enumerate(all_texts):
new_dir_path = output_directory
#print(new_dir_path)
path = os.path.join(new_dir_path, "list%d.txt" % i)
with codecs.open(path, "w", encoding='utf8') as filename:
for item in [a_list]:
filename.write(item+"\n")
所需的输出将由每个已处理文件的实际名称组成。在
你就快到了:
基于更新的代码示例进行更新。这里使用的是不同的循环,除非在两个循环之间进行处理,否则这并不理想。因为我要保留这个结构,所以我们必须确保将每个内容块与原始文件名相关联。最好的结构是dict,如果顺序很重要,我们使用
^{pr2}$OrderedDict
。现在,当我们循环文件名,OrderedDict
中的内容对时,我们需要更改文件的扩展名以匹配新的文件类型。幸运的是,python在os.path
模块中有一些很好的文件/路径操作实用程序。os.path.basename
可用于从文件中剥离目录,os.path.splitext
将从文件名中剥离扩展名。我们使用这两种方法只获取不带扩展名的文件名,然后附加.txt
来指定新的文件类型。综合起来,我们得到:第二次更新:OP问我如何写这段代码,如果这就是所有的,那么这里是:
^{3}$相关问题 更多 >
编程相关推荐