前言
最近学习python,感觉python主要就是库,做点啥都要import **库。,有些常用的库,我感觉临时查觉得很麻烦,感觉有必要把常用功能记住。以下例如OS模块。
文档基于学习,摘抄,个人使用。
1.查看关于模块的帮助
import os
help(os)
可以看到有很多
os模块提供的就是各种 Python 程序与操作系统进行交互的接口。通过使用os模块,一方面可以方便地与操作系统进行交互,另一方面页可以极大增强代码的可移植性。如果该模块中相关功能出错,会抛出OSError异常或其子类异常
说人话就是,这个模块是和操作系统打交道的,你想通过python和系统打交道,就利用这个模块,比如对文件的操作
,执行相关命令。
DESCRIPTION
This exports:
- all functions from posix or nt, e.g. unlink, stat, etc.
- os.path is either posixpath or ntpath
- os.name is either 'posix' or 'nt'
- os.curdir is a string representing the current directory (always '.')
- os.pardir is a string representing the parent directory (always '..')
- os.sep is the (or a most common) pathname separator ('/' or '\\')
- os.extsep is the extension separator (always '.')
- os.altsep is the alternate pathname separator (None or '/')
- os.pathsep is the component separator used in $PATH etc
- os.linesep is the line separator in text files ('\r' or '\n' or '\r\n')
- os.defpath is the default search path for executables
- os.devnull is the file path of the null device ('/dev/null', etc.)
基本上以上就是对os模块的大致描述。
以下是常用的,先记住运用在理解吧!
该属性宽泛地指明了当前 Python 运行所在的环境,实际上是导入的操作系统相关模块的名称。这个名称也决定了模块中哪些功能是可用的,哪些是没有相应实现的。
os.name
不带括号
#在windows上是nt 在Linux上是posix
os.environ
os.environ
"environ{'AEX_BIN_ROOT': 'C:\\MentorGraphics\\9.5PADS\\SDD_HOME\\translators\\win32\\bin',
'AEX_ENABLE_JOBPREFS_LAYER_FIX': '1',
'ALLUSERSPROFILE': 'C:\\ProgramData',
'APPCODE_VM_OPTIONS': 'C:\\Users\\Administrator\\Desktop\\JetBrains 2022 最新全家桶激活(10.19)\\JetBrains 2022 最新全家桶激活\\方式3:永久激活补丁+脚本(适合最新版本,可显示到2025年)\\jetbra\\vmoptions\\appcode.vmoptions',
'APPDATA': 'C:\\Users\\Administrator\\AppData\\Roaming',
'APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL': 'true',"
os.walk
给他个路径,生成该路径下的路径,文件目录和文件组成的3元素元组
os.listdir
列出列出(当前)目录下的全部路径(及文件)。该函数存在一个参数,用以指定要列出子目录的路径,默认为“.”,即“当前路径”
os.mkdir()
新建文件夹
os.mkdirs()
递归创建
os.remove()
删除文件
os.removedir()
os.removedir()函数来递归删除源路径的最下级目录
os. rename()
修改文件名一般调用格式为os.rename(src, dst),即将src指向的文件或路径重命名为dst指定的名称,加一个S,os.renames()代表的是递归
os.getcwd()
字面意思:get the current working directory
os.chdir()
change the directory,改变当前工作的目录,修改完后,os.getcwd()获取到的就是最新的。
os.path
其实这个模块是os模块根据系统类型从另一个模块导入的,并非直接由os模块实现,比如os.name值为nt,则在os模块中执行import ntpath as path;如果os.name值为posix,则导入posixpath。
##os.path.join()
os.path.join(“C:\\date" "\com")
看懂了吗,传入的参数如果没有绝对路径,那就按照第一个来,如果参数中有一个绝对路径的字符串,那就从这开始往后排,返回的结果是最后一个绝对路径及其之后的参数才会返回
os.path.abspath()
将传入路径规范化,返回一个相应的绝对路径格式的字符串。
os.path.basename()
该函数返回传入路径的“基名”,即传入路径的最下级目录
os.path.basename("C:\Users\Administrator\Desktop")
'Desktop
os.path.dirname()
与上一个函数正好相反,返回的是最后一个分隔符前的整个字符串:
os.path.split()
分割为basename和dirname
os.path.exists()
判断路径是否存在
os.path.isabs()
仅仅是检测格式,同样不对其有效性进行任何核验
字面意思猜猜
os.path.isfile() 和 os.path.isdir()
字面意思
以上没有如何创建文件的,可以使用open()
from time import sleep
import os
if not os.path.exists('C:\\power_test'):
os.makedirs('C:\\power_test')
else:
print("路径存在")
new = "c:\\power_test\\"
xxoo = new + "a.txt"
a = open(xxoo,'w')
a.write("hello world")
a.close()
os.system()
这个方法是最基础的方法,其他的方法都是调用他
system函数可以将字符串转化成命令在服务器上运行;其原理是每一条system函数执行时,其会创建一个子进程在系统上执行命令行,子进程的执行结果无法影响主进程;上述原理会导致当需要执行多条命令行的时候可能得不到预期的结果
import os
os.system('cd /usr/local && mkdir aaa.txt')
# 或者
os.system('cd /usr/local ; mkdir aaa.txt')
OS.popen()
os.popen()方法不仅执行命令而且返回执行后的信息对象(常用于需要获取执行命令后的返回信息),是通过一个管道文件将结果返回。通过 os.popen() 返回的是 file read 的对象,对其进行读取 read() 的操作可以看到执行的输出。
他俩有啥区别,返回值的区别,如果想返回信息对象就用os.popen,如果想返回状态码,就用os.system
from time import sleep
import os
result = os.popen("dir")
for i in result.readlines():
print(i,end="")
#print(result.read())
衍生模块;
关于命令也可以使用commands模块和subprocess模块。如果使用的
commands模块
老模块了,用的少吧,用在2.几
subprocess 模块
Subprocess是一个功能强大的子进程管理模块,是替换os.system ,os.spawn* 等方法的一个模块。
当执行命令的参数或者返回中包含了中文文字,那么建议使用subprocess。,
在学下subprocess模块