文章目录
import os os
模块的导入
1. 操作系统类型获取 os.name
取值 | 系统 |
---|---|
nt | windows系统 |
posix | linux系统 |
import os
print(os.name )
print('windows' if os.name=='nt' else 'linux')
2. 操作系统的详细信息 os.uname
info=os.uanme()
包含操作系统类型以及主机名称
(1)操作系统类型
info.sysname()
(2)主机名称
info.nodename()
3. 系统的环境变量 os.environ
>>> import os
>>> os.environ
environ({'ALLUSERSPROFILE': 'C:\\ProgramData', 'APPDATA': 'C:\\Users\\admin\\AppData\\Roaming', 'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files', 'COMMONPROGRAMFILES(X86)': 'C:\\Program Files (x86)\\Common Files', 'COMMONPROGRAMW6432': 'C:\\Program Files\\Common Files', 'COMPUTERNAME': 'DESKTOP-G43NB6A', 'COMSPEC': 'C:\\Windows\\system32\\cmd.exe', 'DRIVERDATA': 'C:\\Windows\\System32\\Drivers\\DriverData', 'FPS_BROWSER_APP_PROFILE_STRING': 'Internet Explorer', 'FPS_BROWSER_USER_PROFILE_STRING': 'Default', 'HOMEDRIVE': 'C:', 'HOMEPATH': '\\Users\\admin', 'JAVA_HOME': 'C:\\Program Files\\Java\\jdk1.8.0_131\\', 'LOCALAPPDATA': 'C:\\Users\\admin\\AppData\\Local', 'LOGONSERVER': '\\\\DESKTOP-G43NB6A', 'NUMBER_OF_PROCESSORS': '8', 'ONEDRIVE': 'C:\\Users\\admin\\OneDrive', 'ONEDRIVECONSUMER': 'C:\\Users\\admin\\OneDrive', 'OS': 'Windows_NT', 'PATH': 'C:\\ProgramData\\Oracle\\Java\\javapath;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Windows\\System32\\OpenSSH\\;C:\\Program Files\\Java\\jdk1.8.0_131\\bin;C:\\Program Files\\Java\\jre1.8.0_131\\bin;C:\\Users\\admin\\AppData\\Local\\Microsoft\\WindowsApps;;C:\\pycharm\\PyCharm 2019.2.1\\bin;', 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC', 'PROCESSOR_ARCHITECTURE': 'AMD64', 'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 142 Stepping 11, GenuineIntel', 'PROCESSOR_LEVEL': '6', 'PROCESSOR_REVISION': '8e0b', 'PROGRAMDATA': 'C:\\ProgramData', 'PROGRAMFILES': 'C:\\Program Files', 'PROGRAMFILES(X86)': 'C:\\Program Files (x86)', 'PROGRAMW6432': 'C:\\Program Files', 'PSMODULEPATH': 'C:\\Program Files\\WindowsPowerShell\\Modules;C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules', 'PUBLIC': 'C:\\Users\\Public', 'PYCHARM': 'C:\\pycharm\\PyCharm 2019.2.1\\bin;', 'SESSIONNAME': 'Console', 'SYSTEMDRIVE': 'C:', 'SYSTEMROOT': 'C:\\Windows', 'TEMP': 'C:\\Users\\admin\\AppData\\Local\\Temp', 'TMP': 'C:\\Users\\admin\\AppData\\Local\\Temp', 'USERDOMAIN': 'DESKTOP-G43NB6A', 'USERDOMAIN_ROAMINGPROFILE': 'DESKTOP-G43NB6A', 'USERNAME': 'admin', 'USERPROFILE': 'C:\\Users\\admin', 'WINDIR': 'C:\\Windows'})
返回一个字典,通过key的值获取环境变量的value值
>>> os.environ.get('PATH')
'C:\\ProgramData\\Oracle\\Java\\javapath;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Windows\\System32\\OpenSSH\\;C:\\Program Files\\Java\\jdk1.8.0_131\\bin;C:\\Program Files\\Java\\jre1.8.0_131\\bin;C:\\Users\\admin\\AppData\\Local\\Microsoft\\WindowsApps;;C:\\pycharm\\PyCharm 2019.2.1\\bin;'
4. 判断路径是否是绝对路径
os.path.isabs('/user')
判断’/user’是否是绝对路径 返回bool值
>>> os.path.isabs('/user')
True
>>> os.path.isabs('hello')
False
5. 生成绝对路径
(1)生成当前路径下的文件路径
>>> os.path.abspath('hello.png')
'C:\\Users\\admin\\AppData\\Local\\Programs\\Python\\Python37\\hello.png'
>>> os.path.abspath()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: abspath() missing 1 required positional argument: 'path'
>>> os.path.abspath('.')
'C:\\Users\\admin\\AppData\\Local\\Programs\\Python\\Python37'
(2)生成指定路径下的绝对路径
>>> os.path.abspath('.')
'C:\\Users\\admin\\AppData\\Local\\Programs\\Python\\Python37'
>>> os.path.join(os.path.abspath('.'),'text')
'C:\\Users\\admin\\AppData\\Local\\Programs\\Python\\Python37\\text'
>>> os.path.join(os.path.abspath('/user'),'hello')
'C:\\user\\hello'
6. 获取目录名和文件名
filename=os.path.abspath('.')
(1)获取目录名
>>> filename=os.path.abspath('.')
>>> os.path.basename(filename)
'Python37'
(2)获取文件名
>>> os.path.dirname(filename)
'C:\\Users\\admin\\AppData\\Local\\Programs\\Python'
7. 创建目录
(1)创建单个目录
os.mkdir('img')
(2)递归创建多级目录
os.makedirs('/dir1/dir2/dir3')
(3)删除目录
注意:不能递归删除目录
os.rmdir('img')
8. 文件的创建与删除
(1)文件的创建
os.mknod('ok.txt')
(2)文件的删除
os.remove('ok.txt')
9. 文件的重命名
对当前目录下的文件,否则会报错
os.rename('oldname','newname')
10. 判断文件或目录是否存在
os.path.exists('data.txt')
11. 分离后缀名和文件名
>>> os.path.splitext('data.txt')
('data', '.txt')
12. 分离目录与文件名
>>> os.path.split('/user/data.txt')
('/user', 'data.txt')
13.获取文件时间戳
os.path.getctime('/etc/passwd')
os模块练习
需求:
- 在当前目录新建目录img, 里面包含多个文件,
文件名各不相同(X4G5.png) - 将当前img目录所有以.png结尾的后缀名改为.jpg
import random
import string
import os
#定义函数:生成需求文件名
def create_filename(len=4):
li=[]
for i in range(100):
li.append(''.join(random.sample(string.hexdigits,len )))
return li
# 建立目录,生成指定文件名的文件
def create_mkdir(dirname):
os.mkdir(dirname)
lis=create_filename
for i in lis:
os.mknod('/dirname'+i+'.png')
create_mkdir('imm')
def re_rename(dirname,old_name,new_name):
if os.path.exists(dirname):
# 找出以.png结尾的文件
pngfile=[filename for filename in os.listdir(dirname) if filename.endswith(old_name )]
# 将文件名和后缀名分离只保留文件名
basefile=[os.path.splittext(i)[0] for i in pngfile ]
for file in basefile:
oldfilename=os.path.join(dirname,file+old_name)
newfilename=os.path.join(dirname,file+new_name)
os.rename(oldfilename,newfilename)
print("%s重命名%s成功"%(oldfilename,newfilename))
else:
print("该目录不存在!")
re_rename('imm','.png','.jpg')