Python中os.listdir()、os.path.isdir()、os.path.splitext()、os.path.split()、os.path.join()的区别以及正确使用

一.os.listdir()方法

  • 特点:返回指定的文件夹包含的文件或文件夹的名字的列表。以字母为顺序。
import os
path = "/home/shuan/PycharmProjects/python_file_open/"
print(type(os.listdir(path))
print(os.listdir(path))

<class ‘list’>
[‘file_open.text’]


二、os.path.isdir()和os.path.isfile()方法

  • 特点:判断一个目标路径是不是文件夹,返回值是True或False
import os
path = "/home/shuan/PycharmProjects/python_file_open/file_open.text"
print(os.path.isdir(path))
print(os.path.isfile(path))
path = "/home/shuan/PycharmProjects/python_file_open/"
print(os.path.isdir(path))
print(os.path.isfile(path))

False
True
True
False


三、os.path.splitext()方法

  • 特点:分离目标路劲中的文件名和扩展名,返回的值是tuple类型
import os
path = "/home/shuan/PycharmProjects/python_file_open/file_open.text"
print(type(os.path.splitext(path)))
print(os.path.splitext(path))

tuple
(’/home/shuan/PycharmProjects/python_file_open/file_open’, ‘.text’)

这个函数的功能可以使用re.split()或者str.split()来代替

  • re.split(pattern, string, maxsplit=0)
import re
path = "/home/shuan/PycharmProjects/python_file_open/file_open.text"
path_split_list = re.split(r"\.", path)
path_split_list[1] = "." + path_split_list
print(tuple(path_split_list[1]))

(’/home/shuan/PycharmProjects/python_file_open/file_open’, ‘.text’)

四、os.path.split()方法

  • 特点:按照路径将文件名和路径分割开,返回的结果是tuple类型
import os
path = "/home/shuan/PycharmProjects/python_file_open/file_open.text"
print(os.path.split(path))

(’/home/shuan/PycharmProjects/python_file_open’, ‘file_open.text’)

五、os.path.join()

  • 特点:路径拼接文件路径, 可以传递多个路径
  • 注意点:即便传递多个路径,它首先会检测有没有以/开头的路径,如果有,就自动拼接以/路径后面的,前面的路径会抛弃点,如果没有以/开头的,就自动全部路径都拼接, 路径与路径之间,如果没有/隔开,会自动补上
import os
print("1:\t", os.path.join("aaa","bb","ccc.text"))
print("2:\t", os.path.join("aaa","/bb","ccc.text"))
print("3:\t", os.path.join("aaa","./bb", "ccc.text"))

1: aaa/bb/ccc.text
2: /bb/ccc.text # 特别需要注意这个
3: aaa/./bb/ccc.text


面试题:补充缺失的代码

def print_directory_contents(sPath):
"""
这个函数接收文件夹的名称作为输入参数
返回该文件夹中文件的路径
以及其包含文件夹中文件的路径
"""
import os
def print_directory_contents(sPath):
	for path in os.listdir(sPath):
		path = os.path.join(sPath,path)
		if os.path.isdir(path):
			print_directory_contents
		else:
			print(path)
引用\[1\]: 如果觉得输出结果这样不好看,可以修改为 `for root,dirs,files in os.walk('.'): for path in files: if os.path.splitext(path)\[1\] == '.cfg': print(os.path.join(root,path))`。\[1\] 引用\[2\]: 有添加路径,自然也有拆分路径。该函数将路径进行拆封,分离出路径的最后一个文件。见如下代码:`t_path = os.path.abspath('.') #获取当前绝对路径 print(f"path:{t_path}") print(os.path.split(t_path)) #打印 print(os.path.split("D:/Pycharm/project/venv/test.txt"))`。\[2\] 引用\[3\]: 在不使用os.walk函数的情况下,也可以通过上边的函数进行操作。见下方代码:`def traverse_file(path): t_path = os.listdir(path) #获取当前路径 for file in t_path: #遍历 if os.path.isdir(path + "\\" + file): #是文件夹 print(f"if folder\[{path}:{file}\]") new_path = os.path.join(path,file) #添加路径 traverse_file(new_path) #递归查询 elif os.path.isfile(path + "\\" + file): #是文件 print(f"if file\[{path}:{file}\]") else: print(f"unknow {path}:{file}") if __name__ == '__main__': traverse_file('.')`。\[3\] 问题: open(os.path.join 回答: 如果你想使用`open`函数打开一个文件,可以使用`os.path.join`函数来拼接路径。例如,`open(os.path.join(path, filename))`可以打开指定路径下的文件。\[1\] #### 引用[.reference_title] - *1* *2* *3* [Python学习四(文件操作)](https://blog.csdn.net/qq_26226375/article/details/126466429)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值