回顾os和sys
import sys sys.argv[0] = __file__
sys.argv是显示程序本身路径,路径用列表储存
['C:/应用软件/python类/python程序/day25/day25.py']
而经常用到的__file__显示的也是当前路径,是字符串
C:/应用软件/python类/python程序/day25/day25.py <class 'str'>
所以要想两者相等,摘出来:sys.argv[0] = __file__
用print(sys.argv[0] == __file__)判断一下,结果为真
True
对于os.path.abspath(path)则是规范化绝对路径
如__file__为
C:/应用软件/python类/python程序/day25/day25.py
而os.path.abspath(__file__)为
C:\应用软件\python类\python程序\day25\day25.py
是斜线('/'和'\')的不同,在写路径是,我们通常用上端向左的 反斜杠 '\',但是这种反斜杠写路径的时候,容易和python的\t,\n 重名,我们就在路径前加转译字符r,或者用 '\\' 取代 '\'(上文__file__写法)
print(r'C:\应用软件\python类\python程序\day25\day25.py') print('C:\\应用软件\\python类\\python程序\\day25\\day25.py') #结果显示 C:\应用软件\python类\python程序\day25\day25.py C:\应用软件\python类\python程序\day25\day25.py
如果使用正斜杠(上文os.path.abspath写法),就不会这么麻烦,不会出现上述情况
print('C:/应用软件/python类/python程序/day25/day25.py') #结果 C:/应用软件/python类/python程序/day25/day25.py
此外,正斜杠可以用作除法,就是我们的除号
print(10/3) #结果 3.3333333333333335
以下是'\t'空四格和'\n'换行的例子
print('啊') print('\t啊') print('\n啊') #结果 啊 啊 啊
os.path.split(__file__)可以把__file__的最后一个路径和之前的路径拆开,拆成一个元组
print(__file__) print(os.path.split(__file__)) #结果 C:/应用软件/python类/python程序/day25/day25.py ('C:/应用软件/python类/python程序/day25', 'day25.py')
os.path.dirname和os.path.basename分别取元组的前后2个部分
print(os.path.dirname(__file__)) print(os.path.basename(__file__)) #结果 C:/应用软件/python类/python程序/day25 day25.py
在开发规范中的,start作为启动文件,需要调用core中的scr主逻辑程序,这是就需要用到os模块了sys模块了
import sys,os BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(BASE_DIR) from core import src if __name__ == '__main__': src.run
其中__name__在启动的文件中才会显示__main__
在被调用时,会显示被调用的文件名称