【os.path.的一些功能】: 根据实际项目中的例子来理解一下大体的用法,目前只接触了几个方法
例1:我是在c:\python\django\ttsx2\ttsx_goods\views.py工作,运行环境是在c:\python\django\ttsx2下,此时我运行命令去执行views.py。
当在views.py下写下这句代码:f = os.path.dirname(__file__):代码的意思是返回运行脚本所在的路径,这里输出f会返回空。如果运行环境是c:\python\django\ttsx2\ttsx_goods\views.py,输出f后返回值会是c:\python\django\ttsx2\ttsx_goods。
当在views.py注释掉第一句代码并下写下这句代码:f = os.path.abspath(__file__):代码的意思是返回运行脚本所处的绝对路径,输出f会返回c:\python\django\ttsx2\ttsx_goods\views.py。
所以一般开发中都会写成下面这种形式:f = os.path.dirname(os.path.abspath(__file__)):意思是先去获取脚本的绝对路径得到c:\python\django\ttsx2\ttsx_goods\views.py,接着返回脚本所在的目录c:\python\django\ttsx2\ttsx_goods
那么同理,我这样写:f = os.path.dirname(os.path.dirname(os.path.abspath(__file__))):可以得到c:\python\django\ttsx2。理解以后看这个需求:我目前在ttsx2\ttsx_goods\views.py下工作,接下来我想在ttsx2路径下的static文件夹下工作该怎么做?看下面
f = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'static'):获取到c:\python\django\ttsx2然后进行join路径拼接,拼接到static路径中
总结:
1,执行带(__file__)的语句时,必须要在实际存在的.py文件中执行,如果是在命令行执行会报异常NameError: name '__file__' is not defined
2,dirname(__file__)如果不输入完整路径是不会返回路径的,所以一般都会配合asbpath()来使用
【 pip与apt-get的区别在哪儿呢?】:
pip用来安装来自PyPI的python所有的依赖包,并且可以选择安装任何在PyPI上已上传的先前版本的依赖包
apt-get可以用来安装软件、更新源、也可以用来更新自Ubuntu的典型依赖包,即意味着它只是安装(最新发布的,或最近一个的)单一版本,并且我们不能决定我们要安装的依赖包的版本或选择它之前的版本。
【什么时候该用pip,什么时候该用apt-get呢?】:
如果你需要最新版本的python依赖包,你可以直接使用apt-get,在项目突然需要使用旧版本的依赖包时,你就可以使用virtualenv和pip来使完美得再安装上一个旧版本的依赖包;
如果你需要安装python包的特定版本,或在virtualenv中安装包,或安装只托管PyPI上一个包,此时只有pip会帮你解决这个问题了。
PyPI(Python Package Index)是python官方的第三方库的仓库,所有人都可以下载第三方库或上传自己开发的库到PyPI。PyPI推荐使用pip包管理器来下载第三方库。
apt-get是高级包装工具(英语:Advanced Packaging Tools,简称:APT)是 Debian及其衍生发行版(如:Ubuntu)的软件包管理器。APT可以自动下载,配置,安装二进制或者源代码格式的软件包,因此简化了 Unix系 统上管理软件的过程,apt-get命令一般需要root权限执行,所以一般跟着 sudo命令:
【sudo apt-get install 安装】-- 【sudo apt-get remove 移除】
【 sudo apt-get update 更新源】--【sudo apt-get upgrade 更新已安装的包】
%格式化小例子:
a = 123,b = '%d, %06d' % (a, a)-->b = '123,000123' 格式化前加0的意思为补零
a = 12.32, b = '%f...%.1f...%05.1f' % (a,a,a)-->b = '12.32...12.3...012.3'
a = {'a': 1, 'b': 'ab'}, b = '%(a)d...%(b)s' % a-->b = '1...ab' 基于字典形式的格式化操作
内置函数vars(): a = 5, b = 4 vars()-->{'a':5, 'b':4} vars()会把所有调用这个函数之前存在的变量转换为字典的键值对