python 内置模块os 和 sys
2021-04-08 07:26
标签:append ica val read 消失 好用 命名 split 源文件 Python中大多数系统级接口都集中在两个模块: sys和os———《Programming Python》 一、OS模块 用于提供系统级别的操作。 OS 路径相关 系统相关 1. os.path.isdir, 可以看出:os.path.split与os.path.join是正好相反的功能,一个是分割,一个是组合 4.os.path.abspath根据传入的相对/绝对路径返回对应的绝对路径 从输出结果看不出参数"r"的功能 二、SYS模块 sys.argv 命令行参数List,第一个元素是程序本身路径 1.相对路径和绝对路径 绝对路径就是文件的真正存储的路径,如:C:\Users\lenovo\Desktop 相对路径就是以当前文件为基准一级级目录指向被引用的资源文件。 结果如下: 2.Python sys.path的使用 sys.path模块是动态的修改系统路径 因为模块要处于Python搜索路径中的目录里才能被导入,(但我们不喜欢维护一个永久性的大目录,因为其他所有的Python脚本和应用程序导入模块的时候性能都会被拖累。)因此当某一目录存在而且此前不在sys.path时,我们可以用sys.path动态地在路径中添加一个"目录"。 sys.path是个列表,所以在末尾添加目录是很容易的,用sys.path.append就行了。当这个append执行完之后,新目录即时起效,以后的每次import操作都可能会检查这个目录。当然我们也可以选择用sys.path.insert(0,…,这样新添加的目录会优先于其他目录被import检查。 sys.path.append(‘你的模块路径名称’)。 sys.path.insert(0,’模块的名称’) 添加相关的路径,但在退出python环境后自己添加的路径就会自动消失! 3.python 在不同层级目录import 模块的方法 有一个文件夹/home/a, 里面有个模块叫b.py, 我怎么把他import到程序里? 方法一: import sys; 方法二: 在目录里面增加__init__.py文件,里面可以写import时执行的代码,当然也可以留空就可以. 方法三: from home.a.b import * Python包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件的路径。 (1)主程序与模块程序在同一目录下: 如下面程序结构: 若在程序test1.py中导入模块mod1, 则直接使用import mod1或from mod1 import *; (2)主程序所在目录是模块所在目录的父(或祖辈)目录 若在程序test1.py中导入模块mod2, 需要在mod2文件夹中建立空文件__init__.py文件(也可以在该文件中自定义输出模块接口); 然后使用 from mod2.mod2 import * 或import mod2.mod2. (3)主程序导入上层目录中模块或其他目录(平级)下的模块 当要导入的文件和当前文件在同一个目录时,可以直接导入这个文件。 当要导入的文件或者目录和当前文件不在同一目录时,需要先跳到要导入文件的父级目录(即将父级目录加入系统路径),然后一级一级的用点号连接走过的目录或者文件,直到到达要导入的模块。 python 内置模块os 和 sys 标签:append ica val read 消失 好用 命名 split 源文件 原文地址:https://www.cnblogs.com/ylzchs/p/13361094.html
目录和文件
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
os.curdir 返回当前目录: (‘.‘)
os.pardir 获取当前目录的父目录字符串名:(‘..‘)
os.makedirs(‘dirname1/dirname2‘) 可生成多层递归目录
os.removedirs(‘dirname1‘) 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir(‘dirname‘) 生成单级目录;相当于shell中mkdir dirname
os.rmdir(‘dirname‘) 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir(‘dirname‘) 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove() 删除一个文件
os.rename("oldname","newname") 重命名文件/目录
os.stat(‘path/filename‘) 获取文件/目录信息
os.path.abspath(path) 返回path规范化的绝对路径
os.path.split(path) 将path分割成目录和文件名二元组返回
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path) 返回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[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep 输出用于分割文件路径的字符串
os.name 输出字符串指示当前使用平台。win->‘nt‘; Linux->‘posix‘
os.system("bash command") 运行shell命令,直接显示
os.environ 获取系统环境变量
os.path.isfile,
os.exists,
os.path.getsize
顾名思义,这是用来查看路径/文件是否存在的,getsize可以获取文件大小(kb)>>> import os
>>> os.path.isdir(r‘F:\python程序‘) #如果path是一个存在的目录,则返回True。否则返回False
True
>>> os.path.getsize(r‘F:\python程序‘)#返回文件夹"F:\python程序"的大小
12288
>>> os.path.exists(r‘F:\python程序\导入路径研究‘)#如果path存在,返回True;如果path不存在,返回False
True
>>> os.path.isfile(r‘F:\python程序\导入路径研究\test.py‘)#如果path是一个存在的文件,返回True。否则返回False
True
>>>
>>> os.path.split(r‘F:\python程序\导入路径研究\test.py‘)#将path分割成目录和文件名二元组返回
(‘F:\\python程序\\导入路径研究‘, ‘test.py‘)
>>> a=os.path.split(r‘F:\python程序\导入路径研究\test.py‘)
>>> print(a)
(‘F:\\python程序\\导入路径研究‘, ‘test.py‘)
>>> os.path.join(*a) #将多个路径组合后返回
‘F:\\python程序\\导入路径研究\\test.py‘
>>> file_loc=r‘F:\python程序\导入路径研究\test.py‘
>>> os.path.dirname(file_loc)#返回path的目录。
‘F:\\python程序\\导入路径研究‘
>>> os.path.basename(file_loc)#返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。
‘test.py‘
>>> pathname=r‘F:\python程序\导入路径研究\test.py‘
>>> pathname.split(os.sep)
[‘F:‘, ‘python程序‘, ‘导入路径研究‘, ‘test.py‘]
>>> os.sep.join(pathname.split(os.sep))
‘F:\\python程序\\导入路径研究\\test.py‘
############os.sep的用法###########
python是跨平台的。在Windows上,文件的路径分隔符是‘\‘,在Linux上是‘/‘。
为了让代码在不同的平台上都能运行,那么路径应该写‘\‘还是‘/‘呢?
使用os.sep的话,就不用考虑这个了,os.sep根据你所处的平台,自动采用相应的分隔符号。3.注意
os
模块下的os.path.normpath
也很好用,可以用来规范一个路径>>> os.path.normpath(‘F:\python程序\导入路径研究\test.py‘)
‘F:\\python程序\\导入路径研究\test.py‘
1 import os
2
3 print(os.path.abspath(".")) #当前目录的绝对路径
4 print(os.path.abspath(r"."))
5
6 print(os.path.abspath(".."))
7 print(os.path.abspath(r"..")) #上级目录的绝对路径
8
9
10 print(os.path.abspath(r"F:/python程序/导入路径研究/abspath功能.py"))
11 print(os.path.abspath(r"F:/python程序/导入路径研究/abspath功能.py"))
用于提供对解释器相关的操作
sys.exit(n) 退出程序,正常退出时exit(0),异常为exit(1)
sys.version 获取Python解释程序的版本信息
sys.maxint 最大的Int值
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform 返回操作系统平台名称
sys.stdout.write(‘please:‘)
val = sys.stdin.readline()[:-1]
以下是常用的表示当前目录和当前目录的父级目录的标识符
../ 表示当前文件所在的目录的上一级目录
./ 表示当前文件所在的目录(可以省略) / 表示当前站点的根目录(域名映射的硬盘目录)
1 import os
2 path1=os.path.abspath(‘.‘) # 表示当前所处的文件夹的绝对路径
3 print(path1)
4 path2=os.path.abspath(‘..‘) # 表示当前所处的文件夹上一级文件夹的绝对路径
5 print(path2)
>>>
==================== RESTART: F:/python程序/导入路径研究/listdir.py ===================
F:\python程序\导入路径研究
F:\python程序
>>>
1 import sys
2 sys.path.append(‘F:\python程序\导入路径研究‘) #sys.path是个列表,用sys.path.append可以在末尾添加目录。
1 import sys
2 sys.path.insert(0,‘F:\python程序\导入路径研究‘)#用sys.path.insert新添加的目录会优先于其他目录被import检查到。
sys.path.append(“/home/a/”)
import b
import home.a.b
前提 home、a中都包括__init__.py 即:要导入的文件的当前目录和父目录都要有init.py文件
下面将具体介绍几种常用情况:
– src
|– mod1.py
|– test1.py
如下面程序结构:
– src
|– mod1.py
|– mod2
| – mod2.py
– test1.py
如下面程序结构:
– src
|– mod1.py
|– mod2
|– mod2.py
|– sub
| – test2.py
– test1.py
若在程序test2.py中导入模块mod1.py和mod2.py。首先需要在mod2下建立__init__.py文件(同(2)),src下不必建立该文件。然后调用方式如下:
下面程序执行方式均在程序文件所在目录下执行,如test2.py是在cd sub;之后执行python test2.py
而test1.py是在cd src;之后执行python test1.py; 不保证在src目录下执行python sub/test2.py成功。
import sys
sys.path.append(“..”)
import mod1
import mod2.mod2总结:
文章标题:python 内置模块os 和 sys
文章链接:http://soscw.com/index.php/essay/72765.html