了解路径,就一定要先了解正斜杠 '/' 和反斜杠 '\'。在 MacOS 和 Linux 系统下,路径默认使用的都是正斜杠'/',在Windows系统下,正反斜杠都可以表示路径分隔符,默认的是反斜杠 '\'。由于反斜杠本身属于转义符,如 '\n' 表示换行符、'\t' 表示横向制表符,这可能会导致使用反斜杠表示的路径在编码时无法被正确识别,如路径
'D:\test'
,在 Python 中,'\test' 中的 '\t' 被识别为制表符,所以该路径无法被找到.针对这种情况,通常有三种解决办法。
- 在每个分隔符前加一个反斜杠,原理是先将转义字符转义,例如
'D:\\test'
。- 通过非转义的原始字符 'r',在路径字符串前添加 r,例如
r'D:\test'
。- 将路径字符串中所有的反斜杠 '\' 改为正斜杠 '/' ,例如
'D:/test'
。
os的路径函数:
path = r'D:\test\number01\huitao.pdf'
path1=r'D:\test\number02'
path2='huitao.txt'
os.path.splite(path) # (r'D:\test\number01','huitao.pdf')返回这俩部分
os.path.dirname(path) # 返回 (r'D:\test\number01')
os.path.basename(path) #返回 (r'huitao.pdf')
os.path.join(path1,path2) #返回(r'D:\test\number02\huitao.txt')
# 需要查找文件的文件夹
dir= r'D:\test\Pythonfile\资源1\经济主要指标'
# 创建存放结果的列表
list_2024 = list()# os.listdir()函数遍历指定文件夹,返回包含文件夹中所有文件的列表
all_files = os.listdir(dir)
# 遍历文件夹中每一个文件
for file in all_files:# 拼接一个文件的路径,得到该文件的绝对路径file_path = os.path.join(dir, file)# 使用os.path.basename()函数获取文件名,判断这个文件的文件名是否含有关键字“2024”## 该语句可以替换为 if “2024” in os.path.split(file_path)[1]:if '2024' in os.path.basename(file_path): list_2024.append(file_path)
path = r'D:\test\number01\huitao.pdf'
path1=r'D:\test\number02'
path2='huitao.txt'
os.path.exists(path) #是否存在这个路径
os.path.getsize(path ) #返回文件大小
os.path.getttime(path) #获取指定文件的修改时间
os.path.getctime(path) #获取指定文件的创建时间
os.path.isfile(path) #判断这个路径是否是文件
os.path.isabs(path) #判断是否为绝对路径
os.path.isdir(path) #判定指定路径是否为目录
# 文件的绝对路径
path = r'D:\test\Pythonfile\资源1\经济主要指标\投标标.xlsx'
# 判断该路径是否指向文件,避免路径错误
if os.path.exists(path):# 获取指定文件的大小size = os.path.getsize(path)# 获取指定文件的修改时间mtime = os.path.getmtime(path)print(f'文件大小为{size}字节,最后修改时间为{mtime}')
else:print('指定路径不存在')
path = r'D:\test\number01\huitao.pdf'
os.path.splitetext(path ) #文件扩展名 返回(D:\test\number01\huitao,‘.pdf’)
# 文件夹的绝对路径
path = r'D:\test\Pythonfile\资源1\主要指标\huit.pdf'
#用于存放结果的列表
pdf_files = list()# os.listdir()函数遍历指定文件夹,返回包含文件夹中所有文件的列表
all_files_name = os.listdir(path)
# 遍历每一个文件
for file_name in all_files_name:# 拼接文件的路径file_path = os.path.join(path, file_name)# 如果文件得到拓展名为'pdf',将其添加到列表中if os.path.splitext(file_path)[1] == '.pdf':pdf_files.append(file_path)
文件和目录的遍历方法
path = r'D:\test'
os.listdir(path) #返回来 (number01,number01,keras.txt)
os.walk(top,topdown=true,οnerrοr=none,followlinks=false)
- top 为要遍历的目录路径。返回的是一个三元组(dirpath,dirnames,filenames),dirpath 为当前遍历的目录树的目录路径,dirnames 为当前目录下所有子目录列表,filenames为当前目录下所有文件列表。
- topdown 为可选参数,为 True 时(默认)表示优先遍历 top目录,即 walk 会遍历 top 文件夹与其每一个子目录。否则会优先遍历 top 的子目录。
- onerror 为可选的错误处理函数。
- followlinks为可选参数,为 True 时表示会遍历目录下的快捷方式实际所指的目录,为 False 时(默认)表示优先遍历 top 的子目录。
# 递归遍历该目录
walk_tree = os.walk('D:\数据Seminar\Python中的os模块\递归遍历示例文件夹')# 从根目录开始遍历整个目录树,每一个目录都会返回一个三元组,使用for循环依次查看结果
for dirpath,dirnames,filenames in walk_tree:print('----------当前遍历的目录树的目录路径----------')print(dirpath)print('----------当前目录下的所有子目录列表----------')# 遍历当前目录下所有的子目录for dirname in dirnames:# 拼接路径,得到子目录的路径dir_name = os.path.join(dirpath, dirname)print(dir_name)print('----------当前目录下所有文件列表----------')# 遍历当前目录下所有的文件for filename in filenames:# 拼接路径,得到文件路径file_name = os.path.join(dirpath,filename)print(file_name)