运行目录,脚本目录,工作目录的区别

本文探讨了Python中的运行目录、脚本目录和工作目录的概念,并通过实例展示了它们之间的区别。当运行`main.py`时,尽管脚本目录不同,但环境变量和当前工作目录保持一致。示例代码展示了如何使用`os`库获取这些目录信息。

名词解释

  • 运行目录,又称为当前工作目录,即最开始运行程序时所在的目录
  • 脚本目录,当前文件目录,指正在运行的程序所在的目录,但当执行另一个程序时,脚本目录也随着变化
  • 工作目录,即环境变量
  • 路径和目录的区别:路径包含执行文件本身,而目录不包含

文件目录示例

  • test
    • test1
      • main.py
      • test2
        • main2.py
# main.py
import sys,os
from test2.main2 import fun1

print('main : ')
print(os.path.abspath(os.path.dirname(__file__))) # 当前文件目录
print("sys.path = ",sys.path)#工作目录或称为环境变量
print("os.getcwd() = ", os.getcwd())#获得当前工作目录
print ("os.path.abspath('.') = ",os.path.abspath('.'))#获得当前工作目录
print ("os.path.abspath('..') = ", os.path.abspath('..'))#获得当前工作目录的父目录
print ("os.path.abspath(os.curdir) = ",os.path.abspath(os.curdir))#获得当前工作目录
fun1()
# main2.py
import sys,os
def fun1():
    print('main2 : ')
    print(os.path.abspath(os.path.dirname(__file__))) # 当前文件目录
    print("sys.path = ",sys.path)#工作目录或称为环境变量
    print("os.getcwd() = ", os.getcwd())#获得当前工作目录
    print ("os.path.abspath('.') = ",os.path.abspath('.'))#获得当前工作目录
    print ("os.path.abspath('..') = ", os.path.abspath('..'))#获得当前工作目录的父目录
    print ("os.path.abspath(os.curdir) = ",os.path.abspath(os.curdir))#获得当前工作目录

当运行main.py文件时,获得如下的输出结果,使用的时vscode,系统为window.可以看到两者的环境变量和当前工作目录是一样的,当前脚本文件目录不一样

main : 
C:\Users\123456\Desktop\test\test1
sys.path =  ['C:\\Users\\123456\\Desktop\\test\\test1', 'C:\\Users\\123456\\anaconda3\\python38.zip', 'C:\\Users\\123456\\anaconda3\\DLLs', 'C:\\Users\\123456\\anaconda3\\lib', 'C:\\Users\\123456\\anaconda3', 'C:\\Users\\123456\\anaconda3\\lib\\site-packages', 'C:\\Users\\123456\\anaconda3\\lib\\site-packages\\win32', 'C:\\Users\\123456\\anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\Users\\123456\\anaconda3\\lib\\site-packages\\Pythonwin']
os.getcwd() =  C:\Users\123456\Desktop\test
os.path.abspath('.') =  C:\Users\123456\Desktop\test
os.path.abspath('..') =  C:\Users\123456\Desktop
os.path.abspath(os.curdir) =  C:\Users\123456\Desktop\test
main2 :
C:\Users\123456\Desktop\test\test1\test2
sys.path =  ['C:\\Users\\123456\\Desktop\\test\\test1', 'C:\\Users\\123456\\anaconda3\\python38.zip', 'C:\\Users\\123456\\anaconda3\\DLLs', 'C:\\Users\\123456\\anaconda3\\lib', 'C:\\Users\\123456\\anaconda3', 'C:\\Users\\123456\\anaconda3\\lib\\site-packages', 'C:\\Users\\123456\\anaconda3\\lib\\site-packages\\win32', 'C:\\Users\\123456\\anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\Users\\123456\\anaconda3\\lib\\site-packages\\Pythonwin']
os.getcwd() =  C:\Users\123456\Desktop\test
os.path.abspath('.') =  C:\Users\123456\Desktop\test
os.path.abspath('..') =  C:\Users\123456\Desktop
os.path.abspath(os.curdir) =  C:\Users\123456\Desktop\test
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值