我试过这个:
ListFiles = list(os.walk(os.getcwd()))
SplitTypes = []
for i in range ( 0 , len(ListFiles) ):
SplitTypes.extend(ListFiles[i].rsplit( "." ) [1])
print(SplitTypes)
但我得到的结果是:
['p', 'y', 't', 'x', 't', '3', '2', ' ', 'p', 'm', '4', '0', '1', '2', '2', '4', '1', '4', 's', 'k', 'p', 'm', 'p', '4']
这些数字是因为我在该目录中的屏幕截图,时间由'分隔。'它们是分开的。
我想要显示结果:
['py', 'txt', 'skp', 'png']
或类似的东西。
以及此文件名' Screen Shot 2017-05-24 at 11.24.33 am.png'应该只显示png位。 在此之后,我将使用set()删除重复项。
答案 0 :(得分:1)
这可以通过以下方式完成:
import os
ListFiles = os.walk(os.getcwd())
SplitTypes = []
for walk_output in ListFiles:
for file_name in walk_output[-1]:
SplitTypes.append(file_name.split(".")[-1])
print(SplitTypes)
os.walk
将输出作为3个元素元组,其中最后一个元素是文件名列表。因此,我们需要遍历os.walk
的输出,它将为当前目录中的文件提供元组,并为每个子目录中的文件提供额外的元组。然后我们需要获取每个元组的最后元素,这将给出文件名列表。然后,我们将使用split
遍历文件名.
并提取扩展名,该扩展名将是使用split
生成的列表的最后一个元素。我们可以通过下标-1来提取Python中任何序列的最后一个元素。最后,我们将提取的扩展名附加到SplitTypes
。
如果您的文件夹中没有其他文件夹,则可以通过以下方式轻松解决您的问题:
import os
SplitTypes=[]
for file in os.listdir(os.curdir):
SplitTypes.append(file.split('.')[-1])
print(SplitTypes)
os.listdir(path)
仅提供路径目录中的文件名。
答案 1 :(得分:0)
pathlib中的路径便于获取扩展名 在Python 3.4及更高版本中
导入操作系统
从pathlib导入路径
def find_extensions(dir_path, excluded = ['', '.txt', '.lnk']):
import os
from pathlib import Path
extensions = set()
for _, _, files in os.walk(dir_path):
for f in files:
ext = Path(f).suffix.lower()
if not ext in excluded:
extensions.add(ext)
return extensions