如何在python中将列表元素指定为文件名?

2024-05-07 19:53:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将列表中的元素指定为目录中某些文件的名称,到目前为止,我创建了一个函数,可以从目录中恢复每个文件的名称并在列表中返回它们:

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")        

所需的输出将由每个已处理文件的实际名称组成。在


Tags: 文件pathin名称列表newfornames
1条回答
网友
1楼 · 发布于 2024-05-07 19:53:06

你就快到了:

for path_name in path_names:
    path = os.path.join(new_dir_path, "list%s.txt" % path_name)
    #This is the path of each new file:
    #print(path)
    with codecs.open(path, "w", encoding='utf8') as f:
        for item in [a_list]:
            f.write(item+"\n")

基于更新的代码示例进行更新。这里使用的是不同的循环,除非在两个循环之间进行处理,否则这并不理想。因为我要保留这个结构,所以我们必须确保将每个内容块与原始文件名相关联。最好的结构是dict,如果顺序很重要,我们使用OrderedDict。现在,当我们循环文件名,OrderedDict中的内容对时,我们需要更改文件的扩展名以匹配新的文件类型。幸运的是,python在os.path模块中有一些很好的文件/路径操作实用程序。os.path.basename可用于从文件中剥离目录,os.path.splitext将从文件名中剥离扩展名。我们使用这两种方法只获取不带扩展名的文件名,然后附加.txt来指定新的文件类型。综合起来,我们得到:

^{pr2}$

第二次更新:OP问我如何写这段代码,如果这就是所有的,那么这里是:

^{3}$

相关问题 更多 >