首页 > 解决方案 > 根据目录中的文件夹返回字符串

问题描述

我正在尝试编写一个代码,该代码将查看指定目录并返回其中文件夹的名称。我需要它们以单独的字符串出现,而不是一行,这样我就可以使用它们根据代码返回的名称创建新文件夹。

到目前为止,这就是我所拥有的:

def Lib_Folder():
       my_list = os.listdir('/Users/Tim/Test/Test Library')
       if '.DS_Store' in my_list:
           my_list.remove('.DS_Store')
           return str(my_list).replace('[','').replace(']','').replace("'", "")

Library_Folder = '%s' % ( Lib_Folder() )

print Library_Folder

它返回这个

# Result: testfolder1, testfolder2

我希望它返回的是

testfolder1
testfolder2

有谁知道我怎么能做到这一点?

标签: pythonstring

解决方案


最好按原样处理这些值,而不是尝试处理 Python 列表的字符串表示,如果你走这条路会导致问题,会有很多小的边缘情况。

此外,您的描述只提到目标文件夹中的目录,您没有检查它,您也会输出文件。

而且我发现这是一种偏好,但如果可以避免的话,我更愿意避免在内存中建立列表。对于少数目录名称真的没关系,但这是我喜欢养成的习惯,所以这个解决方案展示了如何使用生成器:

import os
def Lib_Folder():
    target = '/Users/Tim/Test/Test Library'
    for cur in os.listdir(target):
        # Check to see if the current item is a directory
        if os.path.isdir(os.path.join(target, cur)):
            # Ignore this folder if it exists
            if cur != '.DS_Store':
                # It's a good folder, return it
                yield cur

# Print out each item as it occurs
for cur in Lib_Folder():
    print(cur)

# Or, print them out as one string:
values = "\n".join(Lib_Folder())
print(values)

推荐阅读