目录
需求
法一 法二 法三 法四
结尾
需求:
绝对路径,最终将所有绝对路径存储在列表中。
(熊二表情包可爱吧,获取方式如下)
获取全网低质量图片数据集的方法(含代码)
copy里面的代码,然后输入相应的数量(笔者输入了3),回车,输入熊二表情包。
讲解分割线
因为涉及到文件路径操作,笔者首先想到了os模块,并给出了四种实现方式(大同小异)。
首先进行模块导入
import os
文件夹路径如下
# TODO 图片所在文件夹的绝对路径
file = r'C:\Users\knighthood\OneDrive\桌面\熊二表情包'
法一:
def getfiles():
path_list = []
filenames = os.listdir(file)
print(filenames)
for filename in filenames:
a = os.path.join(file, filename)
print(a)
path_list.append(a)
print(path_list)
return path_list
getfiles()
思路:
os.listdir(file)返回一个包含目录中文件名称的列表。如上述的熊二表情包,接下来遍历列表,通过os.path.join()拼接成绝对路径,最终存入列表中。
注:
"\"存入列表中就变成了"\\",笔者猜测是防止后续可能出现转义。(如下错误的情况)
法二:
def getfiles1():
filenames = os.listdir(file)
for i in range(len(filenames)):
filenames[i] = r"{}\{}".format(file, filenames[i])
print(filenames[i])
print(filenames)
return filenames
getfiles1()
这里主要是将filenames列表中的只包含文件名及后缀的内容替换成了绝对路径。
法三:
def get_files():
path_list = []
for filepath, dirnames, filenames in os.walk(file):
for filename in filenames:
a = os.path.join(filepath, filename)
print(a)
path_list.append(a)
print(path_list)
return path_list
get_files()
这里主要是使用了os.walk()函数,对这一块,笔者不是很熟。
法四:
def get_files1():
for filepath, dirnames, filenames in os.walk(file):
for i in range(len(filenames)):
filenames[i] = r"{}\{}".format(file, filenames[i])
print(filenames[i])
print(filenames)
return filenames
get_files1()
这里主要采用os.walk()并采用法二的操作实现的。
结尾
以上四种,笔者都尝试过且成功的(笔者一般使用法二),对于一些人发的那些只用一个函数就返回的,笔者试过其中几个,不过不是很正确,其返回的是代码.py文件的绝对路径,和图片路径就没啥太大的关系了。
在python中,笔者认为两块内容很重要,一块是os模块(有些内容挺复杂的),另一部分是正则(基础内容多看看就会了,但是真的去写相关的内容,发现还是有点吃力,比如自己写一个提取网址的)