一、获取文件路径实现
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 = inspect.getfile(inspect.currentframe())
print(f"current_file_name: {current_file_name}")
2 获取调用文件的文件路径
有时候我们想要获取调用当前文件的父文件的文件路径,此时可以通过以下代码实现:
import inspect
def be_call_fun():
frame_stack = inspect.stack()
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()
二、获取目录
1 获取当前工作目录
所谓当前工作目录,就是你执行python命令执行python文件时,shell所在的文件夹。
import os
current_working_dir = os.getcwd()
print(f"current_working_dir: {current_working_dir}")
2 借助路径获取目录
第一大节我们已经借绍了几种获取文件路径的方式,要获取对应的文件所处的文件夹,可直接借助这些路径+os.path.dirname()
实现。
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import os
current_file_path = __file__
current_file_dir = os.path.dirname(current_file_path)
print(f"current_file_dir: {current_file_dir}")
三、文件和目录的其他一些操作
1 文件的常用操作
r--读模式打开文件,如果文件不存在则报错。
r+--读写模式打开文件,如果文件不存在则报错。写时原有内容不会被清空,而是被替换式覆盖。
w--写模式打开文件,如果文件不存在则创建。已有内容会被清空。
w+--读写模式打开文件,如果文件不存在则创建。已有内容会被清空。
a--追加模式打开文件,如果文件不存在则创建。
a+--读追加模式打开文件,如果文件不存在则创建。
import os
file_name = "test.txt"
new_file_name = "new_test.txt"
open(file_name, 'w').close()
os.remove(file_name)
os.rename(file_name, new_file_name)
with open(file_name, 'r') as fd:
fd.read()
fd.readline()
fd.readlines()
for line in open(file_name, 'r', encoding='utf-8'):
print(line)
with open(file_name, 'w') as fd:
fd.write("test_str")
fd.writelines(["test_str", "test_str"])
2 目录的常用操作
import os
dir_name = "test_dir/dir_name"
new_dir_name = "test_dir/new_dir_name"
os.mkdir(dir_name)
os.makedirs(dir_name, exist_ok=True)
os.rmdir(dir_name)
import shutil
shutil.rmtree(dir_name)
os.rename(dir_name, new_dir_name)
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))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)