Python如何获取⽂件路径⽬录
⼀、获取⽂件路径实现
1.1 获取当前⽂件路径
import os
current_file_path = __file__
print(f"current_file_path: {current_file_path}")
__file__变量其实有个问题,当⽂件被是被调⽤⽂件时__file__总是⽂件的绝对路径;但当⽂件是直接被执⾏的⽂件
时,__file__并不总是⽂件的绝对路径,⽽是你执⾏该⽂件时给python传的路径。⽐如你是python xxx/yyy.py形式执⾏的,那么此时__file__的值就是xxx/yyy.py。
可以使⽤以下更统⼀的⽅式获取⽂件路径:
import inspect
current_file_name = file(inspect.currentframe())
print(f"current_file_name: {current_file_name}")
1.2 获取调⽤⽂件的⽂件路径
有时候我们想要获取调⽤当前⽂件的⽗⽂件的⽂件路径,此时可以通过以下代码实现:
import inspect
def be_call_fun():
# stack()返回的是调⽤栈列表。
frame_stack = inspect.stack()
# 0是标识当前函数的栈,1是标识上⼀层函数的栈,依此类推。
# 也就是这个数值不⼀定是1,要看你要获取其⽂件路径的函数在第⼏层
caller_frame = frame_stack[1]
caller_file_path = caller_frame.filename
# 由于当前调⽤函数和被调⽤函数放在同⼀个⽂件,所以⽂件名还是当前⽂件名
# 可将调⽤函数和被调⽤函数放到不同⽂件进⾏观察
print(f"caller_file_path: {caller_file_path}")
def caller_fun():
be_call_fun()
if __name__ == "__main__":
caller_fun()
⼆、获取⽬录
2.1 获取当前⼯作⽬录
所谓当前⼯作⽬录,就是你执⾏python命令执⾏python⽂件时,shell所在的⽂件夹。
import os
current_working_dir = os.getcwd()
print(f"current_working_dir: {current_working_dir}")
2.2 借助路径获取⽬录
第⼀⼤节我们已经借绍了⼏种获取⽂件路径的⽅式,要获取对应的⽂件所处的⽂件夹,可直接借助这些路径
+os.path.dirname()实现。
import os
# ⽂件绝对路径
current_file_path = __file__
# 借助dirname()从绝对路径中提取⽬录
current_file_dir = os.path.dirname(current_file_path)
print(f"current_file_dir: {current_file_dir}")
# 类似地可以借助basename()从绝对路径中提取⽂件名
# current_filename = os.path.basename(current_file_path)
# 另外建议使⽤os.path.join()来实现路径拼接,这样不⽤⾃⼰再关注路径分隔符的问题
# 再有是os.path.join()参数并不⼀定要就是⽬录+⽂件名形式,不管多少个参数都可以拼接
# current_file_path = os.path.join(current_file_dir, current_filename)
三、⽂件和⽬录的其他⼀些操作
3.1 ⽂件的常⽤操作
r--读模式打开⽂件,如果⽂件不存在则报错。
r+--读写模式打开⽂件,如果⽂件不存在则报错。写时原有内容不会被清空,⽽是被替换式覆盖。
w--写模式打开⽂件,如果⽂件不存在则创建。已有内容会被清空。
w+--读写模式打开⽂件,如果⽂件不存在则创建。已有内容会被清空。
a--追加模式打开⽂件,如果⽂件不存在则创建。
a+--读追加模式打开⽂件,如果⽂件不存在则创建。
import os
file_name = ""
new_file_name = ""
# 创建空⽩⽂件
open(file_name, 'w').close()
# 删除⽂件
# 重命名⽂件
# 读⽂件
with open(file_name, 'r') as fd:
# 读取所有内容
# 读取⼀⾏
# 读取所有⾏,返回为各⾏组成的形表
# 遍历⽂件各⾏简洁写法
python默认安装路径for line in open(file_name, 'r', encoding='utf-8'):
print(line)
# 写⽂件
with open(file_name, 'w') as fd:
# 向⽂件写⼊内容,需要⾃⾏添加\n
fd.write("test_str")
# 向⽂件写⼊内容,需要⾃⾏添加\n
# 和write的区别是,其参数除了可以是字符串,还可以是字符串列表
fd.writelines(["test_str", "test_str"])
3.2 ⽬录的常⽤操作
import os
dir_name = "test_dir/dir_name"
new_dir_name = "test_dir/new_dir_name"
# 创建⽬录。此种形式是的于shell的mkdir,在⽗⽬录不存在时会创建失败
os.mkdir(dir_name)
# 创建⽬录。此种形式是的于shell的mkdir -p,在⽗⽬录不存在时会⾃动创建⽗⽂件夹
os.makedirs(dir_name, exist_ok=True)
# 删除⽬录。此种形式相当于shell的rmdir,在⽬录⾮空时删除失败
# 删除⽬录。此种形式相当于shell的rm -rf
import shutil
<(dir_name)
# 重命名⽬录。
# 遍历⽬录
# dir_path是当前遍历到的⽬录。dir_names是dir_path下的⽂件夹列表。file_names是是dir_path下的⽂件列表
# 如果想实现⽬录⽩名单,将⽩名单⽬录从dir_names中去除即可
for (dir_path, dir_names, file_names) in os.walk(dir_name):
for file_name in file_names:
print(os.path.join(dir_path, file_name))
以上就是Python如何获取⽂件路径/⽬录的详细内容,更多关于Python获取⽂件路径/⽬录的资料请关注其它相关⽂章!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论