os模块:

#!/usr/bin/env python
# coding:utf-8 import os print(os.getcwd()) #获取当前工作目录,即当前python脚本工作的目录路径
# os.chdir("dirname") #改变当前脚本工作目录;相当于shell下cd
print(os.curdir) # 返回当前目录: ('.') 所以一个点也是代表当前目录的意思
print(os.pardir) # 获取当前目录的父目录字符串名:('..') # print(os.makedirs('dirname1/dirname2')) # 可生成多层递归目录
# print(os.removedirs('dirname1/dirname2')) # 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 # os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
# os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname print(os.listdir('./web')) # 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 不会递归
# os.remove() 删除一个文件
# os.rename("oldname","newname") 重命名文件/目录
# os.stat('path/filename') 获取文件/目录信息
# os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
# os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
# os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:
# os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
# os.system("bash command") 运行shell命令,直接显示
# os.environ 获取系统环境变量
# os.path.abspath(path) 返回path规范化的绝对路径
# os.path.split(path) 将path分割成目录和文件名二元组返回 a = os.path.dirname(r"D:\Python3\14 module\os_test.py")
b = os.path.basename("D:/Python3/14 module/os_test.py")
print(a) # 返回path的目录。其实就是os.path.split(path)的第一个元素
print(b) #返回path最后的文件名。如果path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素 # os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
# os.path.isabs(path) 如果path是绝对路径,返回True
# os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
# os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
# os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 c = os.path.join(a,b) # 路径拼接会自动在里面加上反斜杠 \
print('----------->',c)
# os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间
# os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间 if __name__ == "__main__":
print(os.path.getmtime(__file__))
print(__file__)

os小例子:

#!/usr/bin/env python
# coding:utf-8 import os
import os.path
"""获取指定目录及其子目录下的 py 文件路径。说明:lis 用于存储找到的 py 文件路径。 get_py 函数,递归查找并存储 py 文件路径到 lis 中 """
lis = []
def get_py(path,lis):
fileList = os.listdir(path) #获取path目录下文件
for filename in fileList:
pathTmp = os.path.join(path,filename) #获取path与filename组合后的路径
if os.path.isdir(pathTmp): #如果是目录
get_py(pathTmp,lis) #则递归查找
elif filename[-3:].upper()=='.PY': #不是目录,则比较后缀名
lis.append(pathTmp)
path = input('请输入路径:').strip()
get_py(path,lis)
print('在%s目录及其子目录下找到%d个py文件\n分别为:\n'%(path,len(lis)))
for filepath in lis:
print(filepath+'\n')

os小例子:查找某些文件

#!/usr/bin/env python
# coding:utf-8 import os ## 查找某些文件
def search_file(start_dir, target):
os.chdir(start_dir) for each_file in os.listdir(os.curdir):
ext = os.path.splitext(each_file)[1]
if ext in target:
vedio_list.append(os.getcwd() + os.sep + each_file + os.linesep)
if os.path.isdir(each_file):
search_file(each_file, target) # 递归调用
os.chdir(os.pardir) # 递归调用后切记返回上一层目录 start_dir = input('请输入待查找的初始目录:')
program_dir = os.getcwd() target = ['.mp4', '.avi', '.rmvb'] # 指定文件类型
vedio_list = [] search_file(start_dir, target) f = open(program_dir + os.sep + 'vedioList.txt', 'w')
f.writelines(vedio_list)
f.close()

sys 模块

#!/usr/bin/env python
# coding:utf-8 import sys print(sys.argv) # 使用命令行运行此脚本时可接受传入参数 例如: python3 sys_test.py abc ddd fff # cmd = sys.argv[1]
# path = sys.argv[2]
#
# if cmd =="post":
# pass
# elif cmd =="get":
# pass import time
# 简单模拟进度条
for i in range(100):
sys.stdout.write("#")
time.sleep(0.1)
sys.stdout.flush() ## 更多参考: http://www.cnblogs.com/cherishry/p/5725184.html

一个模块导入时路径的问题:

当前目录有bin.py文件和my_mod文件夹,my_mod文件夹下有ma.py和cal.py文件。

而os和sys正好用来解决my_mod/ma.py导入cal模块, 以及被bin.py导入的路径问题

#!/usr/bin/env python
# coding:utf-8
# cal.py # print('before...') def add(x,y):
return x+y def sub(x,y):
return x-y # print('end....')
if __name__ == "__main__": # 用于本文件的调试
print('testing....') print(__name__) # 被调用时将打印出文件名(模块名)
#!/usr/bin/env python
# coding:utf-8
# ma.py # import cal # 直接执行本文件时,用此方式导入 # from my_mod import cal # 被上一级调用时,用此方式导入。 import sys,os BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__))) print(BASE_DIR)
print(os.path.abspath(__file__)) # 本文件的绝对路径 # 加入项目所在路径, 同时解决本身的运行和被调用时的路径问题。
sys.path.append(BASE_DIR) from my_mod import cal def run():
print(cal.add(7,5)) run()
#!/usr/bin/env python
# coding:utf-8
# bin.py from my_mod import ma # ma.run() ## 模块的种类 :
# 1. 内置模块
# 2. 第三方模块
# 3. 自定义模块 ### 包 和 文件夹 的区别: 是否有 __init__.py 文件 if __name__ =="__main__": # 假设将当前脚本作为主函数,仅可执行,不允许被调用。 可以避免反复调用带来的坑
ma.run()

动态导入模块: 参考: https://www.cnblogs.com/zy6103/p/6943557.html

#!/usr/bin/env python
# coding:utf-8 # 动态导入的方法: # mt = __import__('m1.t') # 只能导入最顶级模块 点后面的不会被导入
# print(mt)
# m1.t.test1()
#
# from m1.t import test1,_test2
#
# test1()
# _test2() import importlib m = importlib.import_module('m1.t') # 动态导入就是基于反射的 print(m)
m.test1()
m.test2() '''
动态导入模块方法1: __import__ 说明:   1. 函数功能用于动态的导入模块,主要用于反射或者延迟加载模块。   2. __import__(module)相当于import module 举例说明: 首先创建一个模块目录lib,然后在目录内创建一个模块为:aa.py 模块代码为: class c(object):
def __str__(self):
return 'C language'
在lib目录平级新建一个测试的模块,使用 __import__ 动态以字符串形式导入lib下的aa模块。 lib = __import__('lib.aa') # 相当于import lib
c = lib.aa.c()
print(c)
动态导入模块方法2:import importlib 实例还是上面的lib.aa模块,这里使用importlib进行动态导入(这个方法好理解,也是官方建议使用的) import importlib
aa = importlib.import_module('lib.aa')
c = aa.c()
print(c)
'''

如果自定义的模块中有写    __all__ = ['read','read2']    # 此方法的列表中只和 import * 有关系
被导入后则只能使用 列表中列出的内容。

包: 类似于文件夹,例如 当前项目day20 下有 glance目录,下面又有 api, cmd, db 三个子目录,

import glance
glance.db.models.register_models('mysql')
glance.api.policy.get()
glance.cmd.manage.ma()

想要使用glance 下面子目录中的模块,则需要每级目录下面的  __init__.py  有相应的导入动作. 这样,整个glance包内的模块都可以使用了。

第三方软件安装:

1. pip包管理器

2. 源码安装: 下载,解压, 执行python setup.py build 编译, 执行 python setup.py install 安装

python模块之os_sys_动态导入_包的更多相关文章

  1. python面向对象反射-框架原理-动态导入-元类-自定义类-单例模式-项目的生命周期-05

    反射 reflect 反射(reflect)其实是反省,自省的意思 反省:指的是一个对象应该具备可以检测.修改.增加自身属性的能力 反射:通过字符串获取对象或者类的属性,进行操作 设计框架时需要通过反 ...

  2. python 模块导入详解

    本文不讨论 Python 的导入机制(底层实现细节),仅讨论模块与包,以及导入语句相关的概念.通常,导入模块都是使用如下语句: import ... import ... as ... from .. ...

  3. python_111_动态导入模块

    lib下aa.py文件内容: class C: def __init__(self): self.name='alex' from lib import aa#正常导入 print(aa.C) 动态导 ...

  4. 嵌入Python系列 | 调用Python模块中无参数函数

    开发环境 Python版本:3.6.4 (32-bit) 编辑器:Visual Studio Code C++环境:Visual Studio 2013 需求说明 在用VS2013编写的Win32程序 ...

  5. 嵌入Python | 调用Python模块中无参数的函数

    开发环境 Python版本:3.6.4 (32-bit) 编辑器:Visual Studio Code C++环境:Visual Studio 2013 需求说明 在用VS2013编写的Win32程序 ...

  6. python 模块和包以及他们的导入关系

    一 模块 1 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编 ...

  7. python之模块导入和包

    一.何为模块 1.一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 2.模块目的和函数,对象等一样,是为了代码的复用性而存在的.即一个py程序写了很多功能,也可 ...

  8. python中schedule模块的简单使用 || importlib.import_module动态导入模块

    1 import schedule 2 import time 3 4 def start(): #定义一个函数 5 print("****") 6 7 8 if __name__ ...

  9. python模块与包的导入

    1. 模块与包的区别 模块,即module,一个包含python语句的.py文件就是一个模块!每个源代码文件都会自动成为模块!没有额外的语法用来声明模块. 包,又称模块包,即module packag ...

随机推荐

  1. MySQL 存储过程返回多个值

    MySQL  存储过程返回多个值   在本教程中,您将学习如何编写/开发返回多个值的存储过程. MySQL存储函数只返回一个值.要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程 ...

  2. 如何在Ubuntu 18.04上安装Pip

    一.简介: Pip是一个软件包管理系统,它简化了用Python编写的软件包(如Python包索引(PyPI)中的软件包)的安装和管理. 在Ubuntu 18.04上缺省没有安装Pip,但安装非常简单. ...

  3. springboot缓存注解——@Cacheable

    @Cacheable: 1,方法运行之前,先查询Cache(缓存组件),按照cacheName指定的名字获取(CacheManager获取相应缓存) 第一次获取缓存如果没有Cache组件会自会自动创建 ...

  4. Disable access to Windows Update

    Disable access to Windows Update If this policy setting is enabled, all Windows Update features are ...

  5. WPF界面假死

    首先要检查那些滥用 Timer.Dispacher Timer 或者滥用什么“线程+死循环+阻塞”轮询的代码. 这种是编程大忌,有些人不会设计事件驱动程序,而是滥用轮询. 若是:触发事件后的假死,搜W ...

  6. python-Excel读取-合并单元格读取

    python-Excel读取-合并单元格读取(后续会补充python-Excel写入的部分) 1. python读取Excel单元格 代码包含读取Excel中数据,以及出现横向合并单元格,以及竖向合并 ...

  7. 强化学习(六):n-step Bootstrapping

    n-step Bootstrapping n-step 方法将Monte Carlo 与 one-step TD统一起来. n-step 方法作为 eligibility traces 的引入,eli ...

  8. wait和sleep的区别

    wait是线程永久等待,只有调用notify才能进行唤醒 sleep是等待指定的时间,自动唤醒

  9. Cognos命名空间不可用

    1. 问题描述 启动Cognos失败,报错代码为0146. 2. 问题分析 namespace 配置有问题,检查configuration 3. 解决方案 如果检查不出问题,删除$COGNOS_HOM ...

  10. 卡方分布(Chi-Square Distribution):

    定义:如果我们的随机变量是标准正态分布(详见以前博客的高斯分布),那么多个随机变量的平方和服从的分布即为卡方分布. X=Y12+Y22+⋯+Yn2 其中,Y1,Y2,⋯,Yn均为服从标准正态分布的随机 ...