调用模块的实质是运行python代码,比如a.py文件里有函数f(),那么你在调用a模块的时候,实质是运行了a模块里的函数f(),这个时候内存里就有这个函数了,可以直接用,那是不是随便一个py类型的文件都可以直接调用呢?不是的,调用模块的优先级:先从当前目录里面找你需要调用的模块,当前目录找不到的话就python自己的环境变量里找。

  下面例出常用的os模块的方法

import os,sys
print(sys.path)#获取python的环境变量,以list形式返回
#输出:['E:\\study\\Automantic\\jxz-code\\Course4']
print(os.listdir('./'))#获取指定目录下的文件及文件夹名称,以list形式返回
#输出:['access.log', 'b.txt', 'c.txt', 'course4作业.py', 'goods.txt', 'user_info.txt', '、', '函数.py']
print(os.getcwd())#获取当前目录
#输出:E:\study\Automantic\jxz-code\Course4
# print(os.chdir('E:\study\Automantic\jxz-code'))#更换当前目录
print(os.rename('c.txt','a.txt'))#修改文件名称
print(os.mkdir('新目录'))#创建文件夹
print(os.rmdir('新目录'))#删除文件夹(只能删除空文件夹)
print(os.makedirs('E:\\xixi\\haha'))#依次创建目录
print(os.removedirs('E:\\xixi\\haha'))#依次删除非空目录
print(os.sep)#获取当前操作系统的路径分隔符
#输出:\
print(os.environ)#获取当前操作系统的环境变量
#输出:environ({'ALLUSERSPROFILE': 'C:\\ProgramData'})
print(os.pathsep)#获取当前系统的环境变量中每个路径的分隔符,linux是:,windows是;
#输出:;
print(os.path.abspath(__file__))#获取当前文件的绝对路径
#输出:E:\study\Automantic\jxz-code\Course4\函数.py
print(os.path.basename(os.path.abspath(__file__))#输出:函数.py
print(os.path.dirname(os.path.abspath(__file__)))#获取指定路径的父目录 #输出:E:\study\Automantic\jxz-code\Course4 print(os.path.isdir(os.path.abspath(__file__)))#判断指定路径是不是一个文件夹 #输出:False print(os.path.isfile(os.path.abspath(__file__)))#判断指定路径是不是一个文件 #输出:True print(os.path.join('一级','二级','三级','haha.txt'))#将内容以当前操作系统的路径分隔符拼接成一个路径 #输出:一级\二级\三级\haha.txt print(os.path.split('E:\study\Automantic\jxz-code\Course4\函数.py'))#分割路径和文件名 #输出:('E:\\study\\Automantic\\jxz-code\\Course4', '函数.py') print(os.path.exists('E:\study\Automantic\jxz-code\Course4\函数.py'))#判断目录或文件是否存在 #输出:True

# 得到指定文件最后一次的访问时间
print(os.path.getctime(os.path.abspath(__file__)))
# 得到指定文件最后一次的修改时间
print(os.path.getmtime(os.path.abspath(__file__)))
# 得到指定文件大小 单位: 字节
print(os.path.getsize(os.path.abspath(__file__)))
# 测试参数是否为绝对路径
print(os.path.isabs(os.path.abspath(__file__)))
# splitext 分割文件名,返回文件名和扩展名组成的元祖
print(os.path.splitext(os.path.abspath(__file__)))

  

os和sys的应用:

  问题:A君写了一个小系统,模块之间彼此可以正常调用,但是B君拷走了A君的代码,运行各种报错,大多为引用模块不存在,函数、方法未定义等,这是因为A君运行的时候都已经把他的绝对路径加进了python的环境变量,而B君在运行的时候并没有加环境变量,运行程序,在调用模块时,找不到模块自然报错了。

  解决:上面的模块介绍里可以看出,sys.path可以获取到一个python环境变量的列表,那么我们只需要把代码的工作目录加到列表里就可以了,具体代码如下:

import sys,os
cwd=os.path.abspath(__file__) #当前文件的绝对路径
pwd=os.path.dirname(cwd)#获取当前文件的父级目录
ppwd=os.path.dirname(pwd)#获取当前文件的父级目录的父级目录
sys.path.insert(0,ppwd)#将当前文件的父级目录的父级目录加入python环境变量,那么这个文件夹下的所有.py文件都可以当做模块引入了
from conf.setting import LOGS_PATH,FILE_PATH
from lib.wrong import write
write(LOGS_PATH,FILE_PATH)

  上题的截图:

原文:https://www.cnblogs.com/znyyy/p/7716644.html

Python3 os模块应用的更多相关文章

  1. python3 os模块

    os模块就是对操作系统进行操作,这个模块提供了一种使用操作系统相关功能的可移植方式.1.系统信息 posix.uname_result(sysname='Linux', nodename='liang ...

  2. Python3 os模块&sys模块&hashlib模块

    ''' os模块 非常重要的模块 ''' import os # print(os.getcwd()) # 获取当前工作目录 # os.chdir(r'路径名') # 改变当前工作目录 # print ...

  3. python3 os模块的常用功能及方法总结

    1.os.getcwd()     #显示当前工作路径 2.os.listdir('dirname')    #返回指定目录下的所有文件和目录名 3.os.remove('filename')     ...

  4. python3.7 os模块

    #!/usr/bin/env python __author__ = "lrtao2010" #python3.7 os模块 #os模块是与操作系统交互的一个接口 # os.get ...

  5. Python3 os.path() 模块

    os 模块提供了非常丰富的方法用来处理文件和目录.常用的方法如下表所示: 序       号 方法及描述 1 os.access(path, mode):检验权限模式 2 os.chdir(path) ...

  6. (转)Python3之os模块

    原文:https://www.cnblogs.com/wang-yc/p/5623981.html 一:简介 os模块主要用于提供系统高级别的操作. 二:常用方法 1 2 3 4 5 6 7 8 9 ...

  7. Python3之os模块

    一:简介 os模块主要用于提供系统高级别的操作. 二:常用方法 os.access(path, mode) # 检验权限模式 os.chdir(path) # 改变当前工作目录 os.chflags( ...

  8. python3中OS模块

    os模块 OS模块简单的来说它是一个Python的系统编程的操作模块,可以处理文件和目录这些我们日常手动需要做的操作. 可以查看OS模块的帮助文档: import os:#导入os模块 help(os ...

  9. (11)-Python3之--os模块

    1.模块介绍 os模块是路径处理模块,它提供了多数操作系统的功能接口函数.当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件.目录打交道 ...

随机推荐

  1. Locust 其他协议

    Locust 是基于HTTP作为主要目标构建的,但是他同样可以扩展其他的协议,接受请求与获得返回.在编写的客户端的时候,我们就要使用到最常使用的 request_success 和 request_f ...

  2. Android manifest 获取源代码

    /********************************************************************************* * Android manifes ...

  3. 如何查看linux系统的版本信息

    前言 有时候需要查看linux系统的版本信息,本文将对此简单介绍. 方法 1.输入"uname -a ",可显示电脑以及操作系统的相关信息. 2.输入"cat /etc/ ...

  4. 怎样取消老毛桃软件赞助商---只需在输入框中输入老毛桃官网网址“laomaotao.org”

    来源:www.laomaotao.org 时间:2015-01-29 在众多网友和赞助商的支持下,迄今为止,老毛桃u盘启动盘制作工具已经推出了多个版本.如果有用户希望取消显示老毛桃软件中的赞助商,那不 ...

  5. windows7所有版本迅雷地址下载集合(含32位和64位) - imsoft.cnblogs

    Windows7 SP1旗舰版 32位官方原版下载: ed2k://|file|/cn_windows_7_ultimate_with_sp1_x86_dvd_618763.iso|265187737 ...

  6. Codeforces Round #462 (Div. 2) B-A Prosperous Lot

    B. A Prosperous Lot time limit per test 1 second memory limit per test 256 megabytes input standard ...

  7. gem install没有反应 解决办法

    在虚拟机上执行gem install redis 没有反应: 百度方法如下: #移除官方镜像,增加淘宝镜像 gem sources --add https://ruby.taobao.org/ --r ...

  8. 好使-利用python 下paramiko模块无密码登录

    [root@salt-minion02 paramiko]# vim baoleiji4.py # -*- coding:utf-8 -*-import paramikoprivate_key = p ...

  9. 初探Net框架下的XML编程技术

    一.前言: XML是微软.Net战略的一个重要组成部分,而且它可谓是XML Web服务的基石,所以掌握.Net框架下的XML技术自然显得非常重要了.本文将指导大家如何运用C#语言完成.Net框架下的X ...

  10. 03.将MPP部署到开发板上

    转载侵删 在一般的嵌入式开发中,只要将uboot,kernel,rootfs下载到开发板上,就可以进行程序开发了.但是海思又进一步的把一些常用视频编解码算法等封装到MPP平台中,进一步简化了工程师的开 ...