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. R语言 重命名目录下所有文件

    myfilepath <- "F:/paper2/climateExposure/wjj_mec/second/paths/" setwd(myfilepath) allty ...

  2. 微信、qq二次分享

    前言 我们平时做微信分享的时候,一般分享出来的页面都是一个简单的html页面,不会加入框架之类的东西.所以当我们在分享出来的页面里面再次进行分享的时候,由于我们没有配置分享的标题.描述这些东西,分享出 ...

  3. mysq带条件的分页查询数据结果错误

    记一次mysql分页条件查询的结果出错: 以一张用户表为例,首先我们看表中的所有数据,注意红色框住的部分: 我们使用不带条件的分页查询来查询,数据显示是OK的: SELECT id,login_nam ...

  4. font-spider-plus,字体压缩插件使用笔记

    font-spider-plus使用笔记, fsp是一个腾讯的大佬改版后的font-soider 主要思路是 采集线上网页使用到的字体,从字体文件中分离出来,完成大幅度压缩, 1,npm i font ...

  5. 转载&修改:赶集mysql军规

    个人认为以下军规主要为了适应海量数据场景,对于业务复杂性系统并一定完全按照此军规   一,核心军规 不在数据库做计算,cpu计算务必移至业务层 控制单表数据量,单表记录控制在千万级 控制列数量,字段数 ...

  6. js的原型/原型链/构造函数

    js里一切皆对象.有js自己内部的对象,还有用户自定义的对象.所有的对象都是从原型上衍生出来的. 原型本身也是对象,原型链的最高层就是Object. 两个重要的属性:prototype, __prot ...

  7. 纯css实现轮播(渐变式 less语法)

    下载:https://pan.baidu.com/s/181GkM0EdM5NSqnUcecMS4Q 预览

  8. cron定时任务

    1.确认系统安装了cron rpm -aq | grep crontabs 2.认识cron时间格式 3.生成定时任务 crontab -e #进入任务命令编辑模式 30 7,12,20 * * * ...

  9. js统一设置富文本中的图片宽度

    var txt = layedit.getContent(ieditor);//获取编辑器内的文本var regex = new RegExp('<img', 'gi');txt = txt.r ...

  10. 思科模拟器PacketTracer7--利用一台交换机将两台pc划分到不同vlan下

    实验2—3 实验内容:将同一交换机下的两台pc划分到不同vlan中 实验工具:思科模拟器PacketTracer7 使用设备:一台交换机,两台PC 实验步骤: 一.配置网络拓扑图 注:1.连线可选择闪 ...