python的os模块详细解读(一)

简介: python的os模块详细解读(一)

os 模块

os是“operating system”的缩写,os模块提供各种 Python 程序与操作系统进行交互的接口,使用os模块,一方面可以方便地与操作系统进行交互,另一方面页可以极大增强代码的可移植性

import os

#system() 在python中执行系统命令 相当于运行shell命令,直接显示。在linux里面执行没什么问题,但是在Windows里面,由于编码是GBK,导致中文不能正常显示。Windows里面可以使用popen来操作

os.system("ifconfig")  # linux
# os.system("ipconfig") windows
# os.system("rm -rf ceshi.txt")


Windows里面乱码

popen()

执行系统命令返回对象,通过read方法读出字符串。可以自动转换编码

os.popen() 方法用于从一个命令打开一个管道。

在Unix,Windows中有效

语法

popen()方法语法格式如下:

os.popen(command[, mode[, bufsize]])

1

参数

command – 使用的命令。

mode – 模式权限可以是 ‘r’(默认) 或 ‘w’。

bufsize – 指明了文件需要的缓冲大小:0意味着无缓冲;1意味着行缓冲;其它正值表示使用参数大小的缓冲(大概值,以字节为单位)。

负的bufsize意味着使用系统的默认值,一般来说,对于tty设备,它是行缓冲;对于其它文件,它是全缓冲。如果没有改参数,使用系统的默认值。

返回值

返回一个文件描述符号为fd的打开的文件对象

obj = os.popen("ipconfig")
print(obj)
print(obj.read())

listdir()

列出指定目录下的所有文件和目录,包括隐藏文件,并以列表方式打印 ***

lst = os.listdir()
print(lst)

可以指定目录:

linux下

getcwd()

获取当前工作目录绝对路径,即当前python脚本工作的目录绝对路径 ***

“”“/mnt/hgfs/python32_gx/day16"”"path

#路径

res = os.getcwd()
print(res)

#获取当前python脚本的路径 + 文件名 ***

print(__file__)

linux下

chdir()

改变当前脚本工作目录;相当于shell下cd

os.chdir("/home/wangwen/mywork")
os.system("touch 2.txt")


environ

获取或修改环境变量

[windows]

(1)右键qq属性找路径

(2)右键我的电脑属性->高级系统设置->环境变量->path 打开环境变量添加对应路径

(3)cmd => QQScLauncher

[linux]

(1)在家目录中创建个文件夹,里面创建个文件wangwen,写入ifconfig

(2)增加wangwen的可执行权限 chmod 777 wangwen 测试一下 sudo ./wangwen

(3)添加环境变量在os.environ[“PATH”] 中拼接wangwen所有的绝对路径

(4)os.system(“wangwen”)

总结: 环境变量path的好处是,让系统自动的找到该命令的实际路径进行执行;

print(os.environ["PATH"])

environ(
{
'PATH': '/home/wangwen/bin:/home/wangwen/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin', 
'XAUTHORITY': '/home/wangwen/.Xauthority', 
'XMODIFIERS': '@im=fcitx', 'XDG_DATA_DIRS': '/usr/share/ubuntu:/usr/share/gnome:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop', 
'GDMSESSION': 'ubuntu', 'MANDATORY_PATH': '/usr/share/gconf/ubuntu.mandatory.path', 'GTK_IM_MODULE': 'fcitx', 
'DBUS_SESSION_BUS_ADDRESS': 'unix:abstract=/tmp/dbus-5JjXbZOpKC', 'DEFAULTS_PATH': '/usr/share/gconf/ubuntu.default.path', 
'XDG_CURRENT_DESKTOP': 'Unity', 'UPSTART_SESSION': 'unix:abstract=/com/ubuntu/upstart-session/1000/1603', 'QT4_IM_MODULE': 'fcitx', 
'QT_LINUX_ACCESSIBILITY_ALWAYS_ON': '1', 'LOGNAME': 'wangwen', 'JOB': 'unity-settings-daemon', 'PWD': '/mnt/hgfs/python32_gx/day16', 
'IM_CONFIG_PHASE': '1', 'PYCHARM_HOSTED': '1', 'LANGUAGE': 'zh_CN:zh', 'PYTHONPATH': '/home/wangwen/pylianxi', 'SHELL': '/bin/bash', 'GIO_LAUNCHED_DESKTOP_FILE': '/home/wangwen/.local/share/applications/jetbrains-pycharm-ce.desktop', 'INSTANCE': '', 'GTK2_MODULES': 'overlay-scrollbar', 'UPSTART_INSTANCE': '', 'GNOME_DESKTOP_SESSION_ID': 'this-is-deprecated', 'GTK_MODULES': 'gail:atk-bridge:unity-gtk-module', 'CLUTTER_IM_MODULE': 'xim', 
'XDG_SESSION_PATH': '/org/freedesktop/DisplayManager/Session0', 
'COMPIZ_BIN_PATH': '/usr/bin/', 'SESSIONTYPE': 'gnome-session', 'XDG_SESSION_DESKTOP': 'ubuntu', 'SHLVL': '0', 
'COMPIZ_CONFIG_PROFILE': 'ubuntu', 'UPSTART_JOB': 'unity7', 'QT_IM_MODULE': 'fcitx', 
'XDG_CONFIG_DIRS': '/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg', 'GNOME_KEYRING_CONTROL': '', 'LANG': 'zh_CN.UTF-8', 'XDG_SEAT_PATH': '/org/freedesktop/DisplayManager/Seat0', 'XDG_SESSION_TYPE': 'x11', 'XDG_SESSION_ID': 'c2', 'DISPLAY': ':0', 'GDM_LANG': 'zh_CN', 'PYTHONIOENCODING': 'UTF-8', 'XDG_GREETER_DATA_DIR': '/var/lib/lightdm-data/wangwen', 
'UPSTART_EVENTS': 'xsession started', 'SESSION': 'ubuntu', 'GPG_AGENT_INFO': '/home/wangwen/.gnupg/S.gpg-agent:0:1', 'DESKTOP_SESSION': 'ubuntu', 'USER': 'wangwen', 'GIO_LAUNCHED_DESKTOP_FILE_PID': '12487', 'QT_ACCESSIBILITY': '1', 'SSH_AUTH_SOCK': '/run/user/1000/keyring/ssh', 'XDG_SEAT': 'seat0', 'PYTHONUNBUFFERED': '1', 'QT_QPA_PLATFORMTHEME': 'appmenu-qt5', 'XDG_RUNTIME_DIR': '/run/user/1000', 'XDG_VTNR': '7', 'HOME': '/home/wangwen', 'GNOME_KEYRING_PID': ''
}
)
"""
添加环境路径

os.environ["PATH"] += ":/home/wangwen/mywork"
os.system("wangwen")

这种方式,脚本执行完就消失了,只是局部变量,不能真正修改系统的环境变量

Windows获取环境变量

Linux下


os 模块属性

1、name 获取系统标识

linux,mac ->posix      windows -> nt
print(os.name)

2、sep 获取路径分割符号

linux,mac -> /       window-> \ ***
print(os.sep)

3、linesep 获取系统的换行符号

linux,mac -> \n window->\r\n 或 \n

print(repr(os.linesep))

4、其它的一些方法

os.chdir(“dirname”) 改变当前脚本工作目录;相当于shell下cd

os.curdir 返回当前目录: (’.’)
os.pardir 获取当前目录的父目录字符串名:(’…’)
os.makedirs(‘dirname1/dirname2’) 可递归创建目录

os.removedirs(‘dirname1’) 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 os.removedirs()是python标准库os的方法,

可以用来递归删除多级目录(什么是递归删除,该怎么理解,可参考下方实例代码及解析),注意,要删除的必须是空目录(空文件夹)。如果要删除的目录不存在,python将抛出FileNotFoundError

os.mkdir(‘dirname’) 生成单级目录;相当于shell中mkdir dirname
os.rmdir(‘dirname’) 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.remove() 删除一个文件
os.rename(“oldname”,“newname”) 重命名文件/目录

os.stat(‘path/filename’) 获取文件/目录信息


os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"

os.pathsep 输出用于分割环境变量文件路径的字符串 win下为;, Linux下为:

import sys
# 打印环境变量路径
# print(sys.path)

# 打印参数,以列表方式返回,每个元素都是字符串
print(sys.argv)

python中argv的用法
sys.argv可以用来获取命令行参数,其中sys.argv[0]为脚本名,即python文件名,
列表中的其他值为传入的参数值,一般定义方式为

script, arg1, arg2, arg3 = argv
这种方式显式地定义了参数名称和参数数量,也可以不显式定义argv的参数,
即直接往命令行里面传参数,然后从argv[]列表中取出参数即可,传参

#命令行界面
python test.py arg1 arg2 arg3
则在agrv的列表中,参数依次为argv[0]是test.py,argv[1]是arg1,依次类推

取参数内容

print('参数个数: ', len(sys.argv), '个参数')
print('参数列表: ', str(sys.argv))

执行脚本 后面跟参数,打印出一个列表,第一次参数是脚本名称,第二各参数以及之后,都是携带的参数

os 模块 (文件操作) 新建/删除

import os
os.chdir("/home/wangwen/mywork")
# -- os模块具有 新建/删除/
#os.mknod   创建文件,为的是在所有系统中创建文件,但是在Windows里面的不能兼容
# os.mknod("1.txt")



#os.remove  删除文件,这个在Windows里面可以用
# os.remove("1.txt")

#os.mkdir   创建目录(文件夹)  Windows里面可用
# os.mkdir("ceshi111")

#os.rmdir   删除目录(文件夹)  只能删除空目录
# os.rmdir("ceshi111")

#os.rename  对文件,目录重命名
# os.rename("2.txt","3.txt")

#os.makedirs   递归创建文件夹
# os.makedirs("a/b/c/d/e/f")

#os.removedirs 递归删除文件夹(空文件夹)
# os.removedirs("a/b/c/d/e/f")


python的os模块详细解读(二):https://developer.aliyun.com/article/1495767

相关文章
|
1天前
|
关系型数据库 数据处理 数据库
Python中的异步编程:理解asyncio模块及其应用
在现代编程中,异步编程变得越来越重要。Python中的asyncio模块为开发者提供了强大的工具,帮助他们利用异步编程模式来处理高并发和IO密集型任务。本文将深入探讨asyncio模块的核心概念、基本用法以及实际应用场景,帮助读者更好地理解和运用Python中的异步编程技术。
|
2天前
|
开发者 Python
确保你的Python环境中已经安装了`python-docx`模块。如果还没有安装,可以通过pip来安装:
确保你的Python环境中已经安装了`python-docx`模块。如果还没有安装,可以通过pip来安装:
8 1
|
2天前
|
资源调度 计算机视觉 Python
`scipy.ndimage`是SciPy库中的一个子模块,它提供了许多用于处理n维数组(通常是图像)的函数。
`scipy.ndimage`是SciPy库中的一个子模块,它提供了许多用于处理n维数组(通常是图像)的函数。
7 0
|
2天前
|
Python
`scipy.signal`模块是SciPy库中的一个子模块,它提供了信号处理、滤波、频谱分析等功能。这个模块包含了许多用于信号处理的函数和类,其中`butter()`和`filtfilt()`是两个常用的函数。
`scipy.signal`模块是SciPy库中的一个子模块,它提供了信号处理、滤波、频谱分析等功能。这个模块包含了许多用于信号处理的函数和类,其中`butter()`和`filtfilt()`是两个常用的函数。
10 0
|
2天前
|
数据可视化 Python
时间序列分析是一种统计方法,用于分析随时间变化的数据序列。在金融、经济学、气象学等领域,时间序列分析被广泛用于预测未来趋势、检测异常值、理解周期性模式等。在Python中,`statsmodels`模块是一个强大的工具,用于执行各种时间序列分析任务。
时间序列分析是一种统计方法,用于分析随时间变化的数据序列。在金融、经济学、气象学等领域,时间序列分析被广泛用于预测未来趋势、检测异常值、理解周期性模式等。在Python中,`statsmodels`模块是一个强大的工具,用于执行各种时间序列分析任务。
7 0
|
2天前
|
API Python
首先,我们导入了`http.client`模块,它是Python标准库中的一个模块,用于创建和发送HTTP请求。
首先,我们导入了`http.client`模块,它是Python标准库中的一个模块,用于创建和发送HTTP请求。
5 0
|
2天前
|
存储 SQL Python
`urllib.parse`模块是Python标准库`urllib`中的一个子模块,它提供了处理URL(统一资源定位符)的实用功能。这些功能包括解析URL、组合URL、转义URL中的特殊字符等。
`urllib.parse`模块是Python标准库`urllib`中的一个子模块,它提供了处理URL(统一资源定位符)的实用功能。这些功能包括解析URL、组合URL、转义URL中的特殊字符等。
6 0
|
2天前
|
网络协议 Python
在Python中,我们使用`socket`模块来进行网络通信。首先,我们需要导入这个模块。
在Python中,我们使用`socket`模块来进行网络通信。首先,我们需要导入这个模块。
4 0
|
2天前
|
Unix Linux Python
`subprocess`模块是Python中用于生成新进程、连接到它们的输入/输出/错误管道,并获取它们的返回(退出)代码的模块。
`subprocess`模块是Python中用于生成新进程、连接到它们的输入/输出/错误管道,并获取它们的返回(退出)代码的模块。
6 0
|
2天前
|
Python
在Python中,`multiprocessing`模块提供了一种在多个进程之间共享数据和同步的机制。
在Python中,`multiprocessing`模块提供了一种在多个进程之间共享数据和同步的机制。
4 0