python - 根据目录中的文件夹返回字符串
问题描述
我正在尝试编写一个代码,该代码将查看指定目录并返回其中文件夹的名称。我需要它们以单独的字符串出现,而不是一行,这样我就可以使用它们根据代码返回的名称创建新文件夹。
到目前为止,这就是我所拥有的:
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
有谁知道我怎么能做到这一点?
解决方案
最好按原样处理这些值,而不是尝试处理 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)
推荐阅读
- ibm-watson - 去偏输出是否会自动替换我模型的输出?
- emacs - Emacs:如何更改 orgmode 日历语言?
- javascript - 等效于 ES6 模块的 AMD 的 require.toUrl
- es6-promise - 如何使用 async/await 而不是 promise (.then)
- php - 如何从数据库中获取新闻并将其打印在 PHP 页面上?
- latex - 带多列的乳胶表文本换行 - 保持间距的方法?
- ios - 升级到 Xcode 版本 10.2 (10E125) 后如何更正错误
- c# - 如果字符串值不为空或为空,则在字符串中添加“|”
- jetty - 带有 Jersey 和嵌入式 Jetty 的 CrossOriginFilter
- android - 如果项目存在于数据库中,Android Firestore 更新字段值