python系统工具
模块:
sys:提供一组功能,在python运行时的操作系统上
os:可以跨平台
os.path:提供文件和目录功能的可移植编程接口
sys模块
sys.platform:程序运行的平台
sys.version:安装的python版本
sys.path:python模块搜索路径
sys.exc_info()获取最近一次的错误信息
sys.argv:
1、sys.argv 是获取运行python文件的时候命令行参数,且以list形式存储参数
2、sys.argv[0] 代表当前module的名字
当只用命令行窗口运行的时候,进入文件所在目录,输入:python a.py 输出结果如下
import sys
a=sys.argv
b=len(sys.argv)
print(a)
print(b)
输出
['a.py']
1
当运行时候输入:python a.py zhang 输出如下
['a.py', 'zhang']
2
继续运行时候输入:python a.py zhang kang 输出如下
['a.py', 'zhang', 'kang']
3
sys.stdout.write()和sys.stdin.readline()类似于print()和input(),sys.stderr()是错误流
os模块
os模块的函数和dos命令和linux命令有些类似如
In[40]: import os
In[41]: os.environ #查看环境变量
Out[41]:
environ{'ALLUSERSPROFILE': 'C:\\ProgramData',
'APPDATA': 'C:\\Users\\HP\\AppData\\Roaming',
'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files',
'COMMONPROGRAMFILES(X86)': 'C:\\Program Files (x86)\\Common Files',
'COMMONPROGRAMW6432': 'C:\\Program Files\\Common Files',
'COMPUTERNAME': 'LAPTOP-AAHPGS9B',
'COMSPEC': 'C:\\WINDOWS\\system32\\cmd.exe',
'CONDA_DEFAULT_ENV': 'tensorflow',
'CONDA_PREFIX': 'G:\\Anaconda3\\envs\\tensorflow',
'CONDA_PROMPT_MODIFIER': '(tensorflow) ',
'CONDA_SHLVL': '1',
'DRIVERDATA': 'C:\\Windows\\System32\\Drivers\\DriverData',
'FPS_BROWSER_APP_PROFILE_STRING': 'Internet Explorer',
'FPS_BROWSER_USER_PROFILE_STRING': 'Default',
'HOMEDRIVE': 'C:',
'HOMEPATH': '\\Users\\HP',
'IPYTHONENABLE': 'True',
'LOCALAPPDATA': 'C:\\Users\\HP\\AppData\\Local',
'LOGONSERVER': '\\\\LAPTOP-AAHPGS9B',
'MAVEN_HOME': 'G:\\apache-maven-3.6.1',
'NUMBER_OF_PROCESSORS': '12',
'ONEDRIVE': 'C:\\Users\\HP\\OneDrive',
'ONEDRIVECONSUMER': 'C:\\Users\\HP\\OneDrive',
'ONLINESERVICES': 'Online Services',
'OS': 'Windows_NT',
'PATH': 'G:\\Anaconda3\\envs\\tensorflow;G:\\Anaconda3\\envs\\tensorflow\\Library\\mingw-w64\\bin;G:\\Anaconda3\\envs\\tensorflow\\Library\\usr\\bin;G:\\Anaconda3\\envs\\tensorflow\\Library\\bin;G:\\Anaconda3\\envs\\tensorflow\\Scripts;G:\\Anaconda3\\envs\\tensorflow\\bin;G:\\Anaconda3\\condabin;G:\\JetBrains\\PyCharm 2019.2\\jbr\\bin;G:\\JetBrains\\PyCharm 2019.2\\jbr\\bin\\server;C:\\windows\\system32;C:\\windows;C:\\windows\\System32\\Wbem;C:\\windows\\System32\\WindowsPowerShell\\v1.0;C:\\windows\\System32\\OpenSSH;C:\\Program Files (x86)\\NVIDIA Corporation\\PhysX\\Common;C:\\Program Files\\NVIDIA Corporation\\NVIDIA NGX;C:\\Program Files\\NVIDIA Corporation\\NVIDIA NvDLISR;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0;C:\\WINDOWS\\System32\\OpenSSH;G:\\Java\\jdk-12.0.2\\bin;G:\\apache-maven-3.6.1\\bin;G:\\mysql-8.0.17-winx64\\bin;C:\\Users\\HP\\AppData\\Local\\Microsoft\\WindowsApps;G:\\JetBrains\\PyCharm 2019.2\\bin;.;G:\\Anaconda3\\envs\\tensorflow\\Scripts;D:\\sqlite;.;G:\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\numpy\\.libs',
'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC',
'PLATFORMCODE': 'KV',
'PROCESSOR_ARCHITECTURE': 'AMD64',
'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 158 Stepping 10, GenuineIntel',
'PROCESSOR_LEVEL': '6',
'PROCESSOR_REVISION': '9e0a',
'PROGRAMDATA': 'C:\\ProgramData',
'PROGRAMFILES': 'C:\\Program Files',
'PROGRAMFILES(X86)': 'C:\\Program Files (x86)',
'PROGRAMW6432': 'C:\\Program Files',
'PROMPT': '(tensorflow) $P$G',
'PSMODULEPATH': 'C:\\Program Files\\WindowsPowerShell\\Modules;C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\Modules',
'PUBLIC': 'C:\\Users\\Public',
'PYCHARM': 'G:\\JetBrains\\PyCharm 2019.2\\bin;',
'PYCHARM_DISPLAY_PORT': '63342',
'PYCHARM_HOSTED': '1',
'PYCHARM_MATPLOTLIB_INDEX': '0',
'PYCHARM_MATPLOTLIB_INTERACTIVE': 'true',
'PYDEVD_LOAD_VALUES_ASYNC': 'True',
'PYTHONIOENCODING': 'UTF-8',
'PYTHONPATH': 'G:\\JetBrains\\PyCharm 2019.2\\helpers\\pycharm_matplotlib_backend;G:\\JetBrains\\PyCharm 2019.2\\helpers\\pycharm_display;G:\\JetBrains\\PyCharm 2019.2\\helpers\\third_party\\thriftpy;G:\\JetBrains\\PyCharm 2019.2\\helpers\\pydev',
'PYTHONUNBUFFERED': '1',
'REGIONCODE': 'APJ',
'SESSIONNAME': 'Console',
'SYSTEMDRIVE': 'C:',
'SYSTEMROOT': 'C:\\WINDOWS',
'TEMP': 'C:\\Users\\HP\\AppData\\Local\\Temp',
'TMP': 'C:\\Users\\HP\\AppData\\Local\\Temp',
'USERDOMAIN': 'LAPTOP-AAHPGS9B',
'USERDOMAIN_ROAMINGPROFILE': 'LAPTOP-AAHPGS9B',
'USERNAME': 'HP',
'USERPROFILE': 'C:\\Users\\HP',
'WINDIR': 'C:\\WINDOWS'}
In[42]: os.getcwd() #查看当前目录
Out[42]: 'F:\\python练习\\python'
In[43]: os.listdir() #列出所有文件目录(不指定就是当前目录)
Out[43]:
['.idea',
'data.txt',
'demo.py',
'homework.py',
'models.py',
'pickle_db',
'shelve_stu.bak',
'shelve_stu.dat',
'shelve_stu.dir',
'test',
'test.py',
'__pycache__']
In[46]: os.getpid()
Out[46]: 14708
In[47]: os.getppid()
Out[47]: 6564
In[48]: os.listdir('c:\\')
Out[48]:
['$Recycle.Bin',
'$SysReset',
'$Windows.~WS',
'Documents and Settings',
'ESD',
'hiberfil.sys',
'hp',
'Intel',
'IntelOptaneData',
'pagefile.sys',
'PerfLogs',
'Program Files',
'Program Files (x86)',
'ProgramData',
'Recovery',
'swapfile.sys',
'swsetup',
'System Volume Information',
'system.sav',
'Users',
'Windows']
In[56]: os.chdir('test') #更换目录
In[57]: os.listdir()
Out[57]: ['test.py']
在python中运行shell命令,也就相当于用python运行cmd命令或者linux命令等类似的命令
os.system(“命令”)
os.popen(“命令”)
In[59]: os.system("cd d:")
D:\
Out[59]: 0
In[60]: os.system("dir")
������ F �еľ��� study
�������� 52F7-44F5
F:\python��ϰ\python\test ��Ŀ¼
2019/09/19 21:17 <DIR> .
2019/09/19 21:17 <DIR> ..
2019/09/19 21:17 552 test.py
这和在cmd下直接cd d:和dir是一样的,这个函数可能没考虑中文的问题,有编码的问题
可以用os.popen(),他返回一个对象,需要再用read()读取
In[67]: print(os.popen('dir').read())
驱动器 F 中的卷是 study
卷的序列号是 52F7-44F5
F:\python练习\python\test 的目录
2019/09/19 21:17 <DIR> .
2019/09/19 21:17 <DIR> ..
2019/09/19 21:17 552 test.py
1 个文件 552 字节
2 个目录 154,191,130,624 可用字节
os.path工具
一些基本的、简单的函数:
创建目录
os.mkdir(‘目录名’)
删除目录
os.rmdir(‘目录名’)
改名
os.rename(‘旧名’,‘新名’)
删除文件
os.remove(‘文件名’)
可移植的工具
分隔符
.sep
路径分隔符
.pathsep
相对当前目录符号
.curdir
相对上级目录符号
.pardir
In[68]: os.sep
Out[68]: '\\'
In[69]: os.pathsep
Out[69]: ';'
In[70]: os.curdir
Out[70]: '.'
In[71]: os.pardir
Out[71]: '..'
.path 路径模块
是否为目录
.isdir(path)
是否文件
.isfile(path)
是否存在
.exists(path)
拆分路径
.split(path)
拆分路径扩展名
.splitext(path)
连接路径
.join()
标准化路径
.normpath()
绝对化路径
.abspath()
In[75]: os.path.isdir('test')
Out[75]: True
In[76]: os.path.isfile('demo.py')
Out[76]: True
In[77]: os.path.exists('homework.py')
Out[77]: True
In[78]: os.path.exists('homework1.py')
Out[78]: False
In[79]: os.path.getsize('demo.py')
Out[79]: 0
In[80]: os.path.getsize('models.py')
Out[80]: 34
In[81]: os.path.split(r'd:\temp\a.txt')
Out[81]: ('d:\\temp', 'a.txt')
In[82]: name=r'd:\temp\a.txt'
In[83]: os.path.dirname(name) #获得目录的名字
Out[83]: 'd:\\temp'
In[84]: os.path.basename(name) #获得文件的名字
Out[84]: 'a.txt'
In[85]: os.path.join(r'd:\temp',r'b.txt')
Out[85]: 'd:\\temp\\b.txt'
In[86]: os.path.splitext(name)
Out[86]: ('d:\\temp\\a', '.txt')
In[87]: p='d:\\app\\data/dd/c.dat'
In[88]: os.path.normpath(p)
Out[88]: 'd:\\app\\data\\dd\\c.dat'
可以通过.abspath()查看绝对化路径
In[89]: os.path.abspath('.')
Out[89]: 'F:\\python练习\\python'
In[90]: os.path.abspath('..')
Out[90]: 'F:\\python练习'