os模块提供了很多允许你的程序和操作系统直接交互的功能
- 得到当前工作目录,即当前Python脚本工作的目录路径:os.getcwd()
#test.py import os print(os.getcwd())
D:\ProgramLearning>python Py_program\test.py D:\ProgramLearning #显示的是当前python解释器所在的目录,而不是文件所在目录
- 返回指定目录下的所有文件和目录名:os.listdir()
#test.py import os print(os.listdir('.'))
D:\ProgramLearning>python Py_program\test.py #打印ProgramLearning下的目录 ['HuJiang_Python', 'Py_program'] D:\ProgramLearning>cd Py_program D:\ProgramLearning\Py_program>python test.py #打印Py_program下的目录 ['.idea', '01模块一.md', '3thMenu.py', 'account.txt', 'Dic_test.py', 'file_rewrite.py', 'function_test.py', 'my_module.py', 'Shopping.py', 'test.py', 'test1.py', 'U2_test.py', 'venv', '电视剧.txt', '虚拟环境下载.docx']
- 函数用来删除一个文件:os.remove()
- 删除多个目录:os.removedirs(r"C:\python")
- 检验给出的路径是否是一个文件:os.path.isfile()
- 检验给出的路径是否是一个目录:os.path.isdir()
- 判断是否是绝对路径:os.path.isabs()
- 检验给出的路径是否真的存在:os.path.exists()
- 返回一个路径的目录名和文件名:os.path.split() 把文件名和目录分开
- e.g os.path.split('/home/swaroop/byte/code/poem.txt') 结果:('/home/swaroop/byte/code', 'poem.txt')
- 分离扩展名:os.path.splitext() 把后缀名分开
- e.g os.path.splitext('/usr/local/test.py') 结果:('usr/local/test', '.py')
- 获取路径名:os.path.dirname()
- 获取绝对路径:os.path.abspath()
- 获取文件名:os.path.basename()
- 运行shell命令:os.system()
- 读取操作系统环境变量HOME的值:os.getenv('HOME')
- 返回操作系统所有的环境变量:os.environ
>>> os.environ environ({'ALLUSERSPROFILE': 'C:\\ProgramData', 'APPDATA': 'C:\\Users\\Thinkpad\\AppData\\Roaming', 'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files', 'COMMONPROGRAMFILES(X86)': 'C:\\Program Files (x86)\\Common Files', 'COMMONPROGRAMW6432': 'C:\\Program Files\\Common Files', 'COMPUTERNAME': 'LAPTOP-KUESMB62', 'COMSPEC': 'C:\\Windows\\system32\\cmd.exe', 'CONFIGSETROOT': 'C:\\Windows\\ConfigSetRoot', 'DRIVERDATA': 'C:\\Windows\\System32\\Drivers\\DriverData', 'FPS_BROWSER_APP_PROFILE_STRING': 'Internet Explorer', 'FPS_BROWSER_USER_PROFILE_STRING': 'Default', 'HOMEDRIVE': 'C:', 'HOMEPATH': '\\Users\\Thinkpad', 'LOCALAPPDATA': 'C:\\Users\\Thinkpad\\AppData\\Local', 'LOGONSERVER': '\\\\LAPTOP-KUESMB62', 'NUMBER_OF_PROCESSORS': '4', 'ONEDRIVE': 'C:\\Users\\Thinkpad\\OneDrive', 'OS': 'Windows_NT', 'PATH': 'D:\\Software\\Anaconda\\Anaconda;D:\\Software\\Anaconda\\Anaconda\\Library\\mingw-w64\\bin;D:\\Software\\Anaconda\\Anaconda\\Library\\usr\\bin;D:\\Software\\Anaconda\\Anaconda\\Library\\bin;D:\\Software\\Anaconda\\Anaconda\\Scripts;C:\\Python\\Scripts\\;C:\\Python\\;C:\\Program Files (x86)\\Intel\\iCLS Client\\;C:\\Program Files\\Intel\\iCLS Client\\;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files\\Intel\\WiFi\\bin\\;C:\\Program Files\\Common Files\\Intel\\WirelessCommon\\;C:\\Program Files (x86)\\Intel\\Intel(R) Management Engine Components\\DAL;C:\\Program Files\\Intel\\Intel(R) Management Engine Components\\DAL;C:\\Program Files (x86)\\Intel\\Intel(R) Management Engine Components\\IPT;C:\\Program Files\\Intel\\Intel(R) Management Engine Components\\IPT;C:\\Windows\\System32\\OpenSSH\\;D:\\Software\\Python解释器\\Scripts\\;D:\\Software\\Python解释器\\;C:\\Users\\Thinkpad\\AppData\\Local\\Microsoft\\WindowsApps;;D:\\Software\\VSCode\\Microsoft VS Code\\bin', 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW', 'PROCESSOR_ARCHITECTURE': 'AMD64', 'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 142 Stepping 9, GenuineIntel', 'PROCESSOR_LEVEL': '6', 'PROCESSOR_REVISION': '8e09', 'PROGRAMDATA': 'C:\\ProgramData', 'PROGRAMFILES': 'C:\\Program Files', 'PROGRAMFILES(X86)': 'C:\\Program Files (x86)', 'PROGRAMW6432': 'C:\\Program Files', 'PROMPT': '$P$G', 'PSMODULEPATH': 'C:\\Program Files\\WindowsPowerShell\\Modules;C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules', 'PUBLIC': 'C:\\Users\\Public', 'SESSIONNAME': 'Console', 'SYSTEMDRIVE': 'C:', 'SYSTEMROOT': 'C:\\Windows', 'TEMP': 'C:\\Users\\Thinkpad\\AppData\\Local\\Temp', 'TMP': 'C:\\Users\\Thinkpad\\AppData\\Local\\Temp', 'USERDOMAIN': 'LAPTOP-KUESMB62', 'USERDOMAIN_ROAMINGPROFILE': 'LAPTOP-KUESMB62', 'USERNAME': 'Thinkpad', 'USERPROFILE': 'C:\\Users\\Thinkpad', 'WINDIR': 'C:\\Windows'})
- 设置系统环境变量,仅程序运行时有效:os.environ.setdefault('HOME','/home/alex')
- 给出当前平台使用的行终止符:os.linesep Windows使用'\r\n',Linux 和 MAC 使用'\n'
>>> os.linesep '\r\n'
- 指示你正在使用的平台:os.name 对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'
>>> os.name 'nt'
- 重命名:os.rename(old, new)
- 创建多级目录:os.makedirs(r"C:\python\test")
>>> os.makedirs('test/sdfs/e') #test 不存在时会自动创建
- 创建单个目录:os.mkdir("test")
>>> os.mkdir('test/sdfs/e') #test 不存在时无法创建,只能创建一个 Traceback (most recent call last): File "<stdin>", line 1, in <module> FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'test/sdfs/e'
- 获取文件属性:os.stat(file)
>>> os.listdir('.') ['.continuum', '.oracle_jre_usage', '.PyCharm2018.3', '.vscode', '3D Objects', 'AppData', 'Application Data', 'Contacts', 'Cookies', 'Desktop', 'Documents', 'Downloads', 'Favorites', 'IntelGraphicsProfiles', 'Links', 'Local Settings', 'MicrosoftEdgeBackups', 'Music', 'My Documents', 'NetHood', 'NTUSER.DAT', 'ntuser.dat.LOG1', 'ntuser.dat.LOG2', 'NTUSER.DAT{bc3b0ccb-3b0e-11e9-ac14-a81e84e70c20}.TM.blf', 'NTUSER.DAT{bc3b0ccb-3b0e-11e9-ac14-a81e84e70c20}.TMContainer00000000000000000001.regtrans-ms', 'NTUSER.DAT{bc3b0ccb-3b0e-11e9-ac14-a81e84e70c20}.TMContainer00000000000000000002.regtrans-ms', 'ntuser.ini', 'OneDrive', 'Pictures', 'PrintHood', 'Recent', 'Saved Games', 'Searches', 'SendTo', 'Templates', 'test', 'Videos', '「开始」菜单'] >>> os.stat('test') os.stat_result(st_mode=16895, st_ino=12103423998638553, st_dev=1849078143, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1552273101, st_mtime=1552273099, st_ctime=1552273099) #st_mode:权限 st_ino:字节号 st_dev:文件所在设备ID st_nlink:链向此文件的连接数(硬连接) st_uid:用户ID st_gid:使用者的团队ID st_size:文件大小 st_atime:最近存取时间 st_mtime:最近修改时间 st_ctime:最近权限修改时间
- 修改文件权限与时间戳:os.chmod(file)
- 终止当前进程:os.exit() #python2 有,python3没有
- 获取文件大小:os.path.getsize(filename)
- 结合目录名与文件名:os.path.join(dir,filename)
>>> os.path.join('root','tset','t.py') 'root\\tset\\t.py'
- 改变工作目录到dirname:os..chdir(dirname)
>>> os.getcwd() 'C:\\Users\\Thinkpad' >>> os.chdir('/cmder') >>> os.getcwd() 'C:\\cmder'
- 获取当前终端的大小:os.get_terminal_size()
>>> os.get_terminal_size() os.terminal_size(columns=120, lines=30) >>> os.get_terminal_size()#拖动终端,以此来决定在终端上书写多少东西 os.terminal_size(columns=75, lines=30)
- 杀死进程:os.kill(10884,signal.SIGKILL)