abstract:1.模块简介os模块主要包含普遍的操作系统相关操作,如果开发者希望自己开发的Python应用能够与平台无关,尤其需要关注os这个模块。2.模块使用2.1 os模块1. os.name,输出字符串指示正在使用的平台,如果是Windows平台,输出'nt',如果是Linux/Unix平台,输出'posix'。import os print os.na
1.模块简介
os模块主要包含普遍的操作系统相关操作,如果开发者希望自己开发的Python应用能够与平台无关,尤其需要关注os这个模块。
2.模块使用
2.1 os模块
1. os.name,输出字符串指示正在使用的平台,如果是Windows平台,输出'nt',如果是Linux/Unix平台,输出'posix'。
import os print os.name
控制台输出,
posix#如果是Linux/Unix平台 nt #如果是Windows平台
2. os.getcwd,获取当前的工作目录,就是当前Python应用工作的目录。
import os print os.getcwd()
控制台输出,
/home/zhb/workspace/PythonTest
3. os.listdir,返回指定目录下的所有文件和目录。
import os print os.listdir(os.getcwd())
控制输出,
['test.py', '.pydevproject', 'PaperID_mapping_to_AffiliationsID.txt', '.settings', '.project', 'BrowseQueryResult.txt']
4. os.remove,删除一个文件。
import os os.remove("temp.txt")
删除当前目录下的temp.txt文件。
5. os.system,执行shell命令。
import os os.system("ls -al")
列出当前工作目录下的所有文件与目录的信息,控制输出,
total 3297204 drwxrwxr-x 3 zhb zhb 4096 10月 13 19:52 . drwxrwxr-x 4 zhb zhb 4096 10月 10 20:44 .. -rwxr--r-- 1 zhb zhb 106063 10月 13 19:03 BrowseQueryResult.txt -rwxr--r-- 1 zhb zhb 3376199667 3月 5 2016 PaperID_mapping_to_AffiliationsID.txt -rw-rw-r-- 1 zhb zhb 364 10月 10 20:44 .project -rw-rw-r-- 1 zhb zhb 423 10月 10 20:44 .pydevproject drwxrwxr-x 2 zhb zhb 4096 10月 11 15:26 .settings -rw-rw-r-- 1 zhb zhb 241 10月 13 19:53 test.py
6. os.sep,取代操作系统特定的路径分隔符。
import os print os.sep
控制台输出,
/#Linux/Unix操作系统输出 \#Windows操作系统输出
7. os.linesep,当前平台使用的行终止符。
>>> import os >>> os.linesep '\n'#Linux平台 '\r\n'#Windows平台
2.2 os.path模块
1. os.path.split,返回一个路径的目录名和文件名,并不检查这个路径是否真实存在。
import os print os.path.split("/home/workspace/PythonTest/test.py") print os.path.split("/home/zhb/workspace/PythonTest/test.py")
控制输出,
('/home/workspace/PythonTest', 'test.py') ('/home/zhb/workspace/PythonTest', 'test.py')
2. os.path.isfile,os.path.isdir分别用于判断指定路径是不是一个文件和目录。
import os print os.path.isfile("/home/zhb/workspace/PythonTest/temp.txt") print os.path.isdir("/home/zhb/workspace/PythonTest") print os.path.isfile("/home/zhb/workspace/PythonTest/temp.py") print os.path.isdir("/home/workspace/PythonTest")
控制台输出,
True True False False
3. os.path.exists,用于检查指定的路径是否真实的存在。
import os print os.path.exists("/home/workspace/PythonTest/test.py") print os.path.exists("/home/zhb/workspace/PythonTest/test.py")
控制台输出,
False True
4. os.path.abspath,获得指定文件的绝对路径。
import os print os.path.abspath("test.py")
控制台输出,
/home/zhb/workspace/PythonTest/test.py
5. os.path.normpath,规范指定路径的字符串形式。
import os print os.path.normpath("/home/zhb////////workspace/PythonTest/test.py")
控制台输出,
/home/zhb/workspace/PythonTest/test.py
6. os.path.getsize,获得文件大小,如果文件名为目录,则返回目录的大小。
import os print os.path.getsize("test.py") print os.path.getsize("temp")
控制台输出,
285 4096
7. os.path.splitext,分离文件名与扩展名。
import os print os.path.splitext("test.py")
控制台输出,
('test', '.py')
8. os.path.join,连接目录与文件名或者目录。
import os print os.path.join("/home/zhb/workspace/PythonTest","test.py") print os.path.join("/home/zhb","workspace/PythonTest")
控制台输出,
/home/zhb/workspace/PythonTest/test.py /home/zhb/workspace/PythonTest
9. os.path.basename,返回文件名。
import os print os.path.basename("test.py") print os.path.basename("/home/zhb/workspace/PythonTest/test.py")
控制台输出,
test.py test.py
10. os.path.dirname,返回文件路径。
import os print os.path.dirname("test.py") print os.path.dirname("/home/zhb/workspace/PythonTest/test.py")
控制台输出,
/home/zhb/workspace/PythonTest
11. os.walk,遍历顶级目录下的文件。
函数声明,os.walk(top, topdown=True, onerror=None, followlinks=False)
参数top,需要遍历的顶级目录的路径,
参数topdown,默认是"True",便是首先返回顶级目录下的文件,然后再遍历子目录中的文件。当topdown的值为"False"时,表示先遍历子目录中的文件,然后再返回顶级目录中的文件。
参数onerror,默认是值是None,表示忽略文件遍历时的错误,如果不为空,则提供一个自定义函数提示错误信息后继续遍历或者抛出异常终止遍历。
import os top_dir = "/home/zhb/workspace/PythonTest" for dir_path,subpath,files in os.walk(top_dir,True): for file in files: file_path = os.path.join(dir_path,file) print file_path
控制台输出,
/home/zhb/workspace/PythonTest/test.py /home/zhb/workspace/PythonTest/.pydevproject /home/zhb/workspace/PythonTest/PaperID_mapping_to_AffiliationsID.txt /home/zhb/workspace/PythonTest/.project /home/zhb/workspace/PythonTest/temp.txt /home/zhb/workspace/PythonTest/BrowseQueryResult.txt /home/zhb/workspace/PythonTest/temp/hello.txt /home/zhb/workspace/PythonTest/.settings/org.eclipse.core.resources.prefs 将参数topdown设置为False, /home/zhb/workspace/PythonTest/temp/hello.txt /home/zhb/workspace/PythonTest/.settings/org.eclipse.core.resources.prefs /home/zhb/workspace/PythonTest/test.py /home/zhb/workspace/PythonTest/.pydevproject /home/zhb/workspace/PythonTest/PaperID_mapping_to_AffiliationsID.txt /home/zhb/workspace/PythonTest/.project /home/zhb/workspace/PythonTest/temp.txt /home/zhb/workspace/PythonTest/BrowseQueryResult.txt
12. os.path.walk,遍历文件夹下所有文件,先遍历顶级目录,再遍历子目录中的文件,但是只产生文件路径,是子目录和文件的混合列表。
函数声明,os.path.walk(top, func, arg),
参数top,需要遍历的顶级目录路径。
参数func,表示回调函数,即对遍历路径进行处理的函数。
参数arg,是传递给回调函数的元组,为回调函数提供处理参数,arg可以为空。
import os top_dir = "/home/zhb/workspace/PythonTest" def find_file(arg,dir_path,files): for file in files: file_path = os.path.join(dir_path,file) print file_path os.path.walk(top_dir,find_file,())
控制输出,
/home/zhb/workspace/PythonTest/temp#子目录 /home/zhb/workspace/PythonTest/test.py /home/zhb/workspace/PythonTest/.pydevproject /home/zhb/workspace/PythonTest/PaperID_mapping_to_AffiliationsID.txt /home/zhb/workspace/PythonTest/.settings#子目录 /home/zhb/workspace/PythonTest/.project /home/zhb/workspace/PythonTest/temp.txt /home/zhb/workspace/PythonTest/BrowseQueryResult.txt /home/zhb/workspace/PythonTest/temp/hello.txt /home/zhb/workspace/PythonTest/.settings/org.eclipse.core.resources.prefs