os就是"operating system"的缩写,os模块提供的就是各种python程序与操作系统进行交互的接口。通过使用os模块,能够处理平台间的差异问题,使得编写好的程序无需做任何改动就能在另外的平台上运行。
举例:在我的电脑(win10)上执行下述代码,返回值是 ‘nt’:
import os
os.name
举例:其中键为“HOMEPATH”(Windows 下,Linux 下为“HOME”),对应的值就是用户主目录的路径。在我的电脑(win10)上执行下述代码。
import os
os.environ["HOMEPATH"]
举例:在python文件中,返回的则是文件所在的位置。
import os
os.getcwd()
举例:
import os
os.chdir("F:\\python_machine_learing_work\\501_model\\data")
os.getcwd()
os.chdir()方法在实际开发中有许多常见应用场景,包括但不限于:
举例:读取文件时,先切换到文件所在的目录路径(os.path.dirname),再读取文件名(os.path.basename)。
def read_file(filepath):
os.chdir(os.path.dirname(filepath)) #os.path.dirname后面会讲到。
return pd.read_csv(os.path.basename(filepath),encoding='utf-8')
file_pos="F:\\python_machine_learing_work\\501_model\\data\\第一次建模用的样本数据\\训练集\\v1_6_feature.csv"
data_pos=read_file(file_pos)
举例:返回指定当前目录下的全部文件夹和文件的名字的列表。
import os
os.listdir("F:\\python_machine_learing_work\\501_model\\data")
举例:返回当前目录下所有文件而非文件夹的名称列表。
import os
def get_filelists(file_dir):
list_directory = os.listdir(file_dir)
filelists = []
for directory in list_directory:
# os.path 模块稍后会讲到
if(os.path.isfile(directory)):
filelists.append(directory)
return filelists
get_filelists("F:\\python_machine_learing_work\\501_model\\data")
举例:新建已经存在的文件夹,会报FileExistsError异常。
import os
os.mkdir("第一次建模用的样本数据")
举例:新建多级目录路径,会报FileNotFoundError异常。
import os
os.mkdir("test\\test_1\\test2")
新建多级目录路径,应该使用makedirs()。
import os
os.makedirs("test\\test_1\\test2")
举例:删除文件,运行成功。
import os
os.remove("F:\\python_machine_learing_work\\501_model\\data\\test\\test.txt")
举例:删除文件夹,会报FileNotFoundError异常。
import os
os.remove("F:\\python_machine_learing_work\\501_model\\data\\test")
举例:同一个文件夹下面重命名。
import os
os.rename("F:\\python_machine_learing_work\\501_model\\data\\test","F:\\python_machine_learing_work\\501_model\\data\\test_new")
举例:不同文件夹下面重命名,可实现文件或者文件夹的“剪切并粘贴”功能。
import os ,
os.rename("F:\\python_machine_learing_work\\501_model\\data\\test","F:\\python_machine_learing_work\\501_model\\test_new")
举例:如果该文件或者文件夹已存在,会报FileExistsError异常。
import os
os.rename("F:\\python_machine_learing_work\\501_model\\data\\test_new","F:\\python_machine_learing_work\\501_model\\test_new")
举例:如果中间目录路径都必须不存在,就会报FileNotFoundError异常。
import os
os.rename("F:\\python_machine_learing_work\\501_model\\data\\test_new","F:\\python_machine_learing_work\\test\\test_new")
举例:当传入路径符合“绝对路径”的格式时,该函数仅仅将路径分隔符替换为适应当前系统的字符,不做其他任何操作,并将结果返回。所谓“绝对路径的格式”,其实指的就是一个字母加冒号,之后跟分隔符和字符串序列的格式:
import os
os.path.abspath("F:\python_machine_learing_work")
举例:当指定的路径不符合上述格式时,该函数会自动获取当前工作路径,并使用os.path.join()函数将其与传入的参数组合成为一个新的路径字符串。
import os
os.path.abspath("hello")
举例:
import os
os.path.basename("F:\\python_machine_learing_work")
举例:
import os
os.path.dirname("F:\\python_machine_learing_work\\501_model\\data\\第一次建模用的样本数据")
举例:
import os
os.path.split("F:\\python_machine_learing_work\\501_model\\data")
举例:
import os
os.path.join("F:\\", "python_machine_learing_work")
举例:如果传入路径中存在一个“绝对路径”格式的字符串,且这个字符串不是函数的第一个参数,那么其他在这个参数之前的所有参数都会被丢弃,余下的参数再进行组合。更准确地说,只有最后一个“绝对路径”及其之后的参数才会体现在返回结果中。
import os
os.path.join("just", "do", "D:\\", "python", "dot", "F:\\", "python_machine_learing_work")
举例:
import os
os.path.exists("F:\\python_machine_learing_work")
举例:
import os
os.path.exists("F:\\python_machine_learing_work\\test")
举例:
import os
os.path.isabs("F:\\python_machine_learing_work")
举例:
import os
os.path.isfile("F:\\python_machine_learing_work")
举例:
import os
os.path.isdir("F:\\python_machine_learing_work")
参考文章:
https://zhuanlan.zhihu.com/p/150835193
https://blog.donothing.site/2015/08/02/python-os/#os-path