在python文件和目录操作中什么方法获得当前工作目录,python在当前目录及当前目录下的文件
Yyds干货库存
Python中文件目录的操作一、前言二、os和os.path模块三、路径一、相对路径二、绝对路径三、拼接路径四、判断目录是否存在五、创建目录一、创建一级目录二、创建多级目录六、删除目录七、遍历目录一、前言目录也叫文件夹,是用来分层存放文件的。文件可以通过目录存储在不同的类别中。我们也可以通过目录快速找到想要的文件。在Python中,没有直接操作目录的函数或对象,而是需要通过内置的os和os.path模块来实现。
说明:os模块是Python内置的与操作系统函数和文件系统相关的模块。该模块中语句的执行结果通常与操作系统有关。在不同的操作系统上运行可能会产生不同的结果。
常用的目录操作主要有判断目录是否存在、创建目录、删除目录和遍历目录。
注:本文内容均以Windows操作系统为例进行介绍,因此代码的执行结果也显示在Windows操作系统下。
二。Python中的os和os.path模块,内置os模块及其子模块os.path来操作目录或文件。使用os模块或os.path模块时,需要先应用import语句导入,然后才能应用它们提供的函数或变量。
以下代码可用于导入操作系统模块:
导入说明:os模块导入后,子模块os.path也可以使用。
导入os模块后,可以使用该模块提供的通用变量来获取与系统相关的信息。常用变量如下:
名称:用于获取操作系统类型。例如,要获取系统类型,您可以输入以下代码:
导入操作系统
system_type=os.name
Print(system_type)运行上面的代码,会显示如图所示的结果:
注意:如果os.name的输出结果是nt,说明是Windows操作系统;如果是posix,则表示Linux、Unix或Mac OS操作系统。
Sep:用于获取当前操作系统使用的路径分隔符。
例如,在Windows操作系统下输入os.sep将显示如图所示的结果:
Lines:用于在当前操作系统中获取换行符。例如,在Windows操作系统下输入os.linesep将显示如图所示的结果:
Os模块还提供了一些操作目录的功能,如下表所示:
功能
解释
getcwd()
返回当前工作目录
列表目录(路径)
返回指定路径下的文件和目录信息。
mkdir(路径[,模式])
创建目录
mkdir(路径1/路径2……[,模式])
创建多级目录。
rmdir(路径)
删除目录
removedirs((路径1/路径2……)
删除多级目录
目录(路径)
设置当前工作目录的路径。
walk(top[,topdown[,onerror]])
遍历目录树,这个方法返回一个元组,它包含所有路径名、所有目录列表和文件列表。
Os.path模块还提供了一些操作目录的函数,如下表所示:
功能
解释
abspath(路径)
获取文件或目录的绝对路径。
存在(路径)
用于判断目录或文件是否存在,如果存在,返回True;否则,将返回False
加入(路径,名称)
用目录或文件名连接目录。
splitext()
分开文件名和扩展名
基本名称(路径)
从目录中提取文件名
目录名(路径)
从一个路径中提取文件路径,不包括文件名。
isdir(路径)
用于确定它是否是路径。
3.用于定位文件或目录的字符串称为路径。在程序开发中,通常会涉及到两条路径,一条是相对路径,一条是绝对路径。
1.相对路径在学习相对路径之前,你需要知道当前的工作目录是什么。当前工作目录是指当前文件所在的目录。在Python中,可以通过os模块提供的getcwd()函数获取当前工作目录。例如,在“D:\Python\test.py”文件中,编写代码:
导入操作系统
Print(os.getcwd()) #输出当前目录执行上述代码后,会显示以下目录,这是当前工作目录:
D:\Python相对路径取决于当前工作目录。如果当前工作目录下有一个名为message.txt的文件,当你打开这个文件时,可以直接写文件名,这个文件名就是相对路径。message.txt文件的实际路径是当前工作目录 D:\Python 相对路径 message.txt ,即 D:\Python\test.py
如果当前工作目录下有一个子目录demo,并且这个子目录下保存了文件message.txt,那么打开这个文件时可以写“demo/message.txt”,比如下面的代码:
用( demo/message.txt )作为file #通过相对路径打开文件。
Pass描述:在Python中,指定文件路径时,需要对路径分隔符“\”进行转义,即将路径中的“\”替换为“\”。比如你需要用 demo\message.txt 而不是 demo\message.txt 。或者,路径分隔符“\”可以替换为“/”。
再学两招:指定文件路径时,也可以在代表路径的字符串前面加上字母R(或R),那么字符串就按原样输出,然后路径中的分隔符就不需要转义了。例如,上面的代码可以修改以下内容:
用(r demo \ message.txt )作为file #通过相对路径打开文件。
2.绝对路径绝对路径是指在使用文件时指定文件的实际路径,它不依赖于当前的工作目录。在Python中,可以通过os.path模块提供的abspath()函数获取文件的绝对路径。abspath()函数的基本语法格式如下:
例如,要获得相对路径 demo\message.txt 的绝对路径,可以使用下面的代码:
导入操作系统
print(OS . path . abspath(r demo \ message . txt )#获取绝对路径如果当前工作目录是 D:\Python ,那么会得到以下结果:
D:\Python\demo\message.txt3 .拼接路径如果想将两条或多条路径拼接在一起形成一条新路径,可以使用os.path模块提供的join()函数。join()函数的基本语法格式如下:
OS.path.join (path1 [,path2 [,……]]),其中path1和path2用于表示要拼接的文件路径,这些路径之间用逗号分隔。如果要拼接的路径中没有绝对路径,则最终拼接的路径将是绝对路径。
注意:使用os.path.join()函数拼接路径时,不会检查路径是否存在。
例如,如果需要将“D:\Python”和“demo\message.txt”路径拼接在一起,可以使用以下代码:
导入操作系统
Print (os.path.join (d: \ python , demo \ message.txt )执行上面的代码,会得到以下结果:
D:\Python\demo\message.txt说明:使用join()函数时,如果要拼接的路径中有多条绝对路径,则以从左到右顺序中的最后一条为准,忽略该路径之前的所有参数,如下面的代码:
导入操作系统
Print (os.path.join (e: \ \ code , d: \ \ python , code , c: \ , demo )将得到拼接后的路径为 C:\demo 。
将两条路径拼接成一条路径时,不要直接使用字符串拼接,而是使用os.path.join()函数,该函数可以正确处理不同操作系统的路径分隔符。
四。判断Python中是否存在该目录。有时需要判断给定的目录是否存在。此时可以通过使用os.path模块提供的exists()函数来实现。exists()函数的基本语法格式如下:
Os.path.exists(path),其中path是要判断的目录,但可以是绝对路径,也可以是相对路径。
返回值:如果给定路径存在,则返回True,否则返回False。
例如,要确定绝对路径“C:\demo”是否存在,可以使用以下代码:
导入操作系统
Print(os.path.exists(C:\\demo ))执行上述代码,如果c盘根目录下没有demo子目录,则返回False,否则返回True。
说明:os.path.exists()函数可以判断目录是否存在,也可以判断文件是否存在。例如,将上面的“C:\demo”替换为“C:\demo\test.txt”用于确定C:\demo\test.txt文件是否存在。
动词(verb的缩写)创建目录在Python中,os模块提供了两个创建目录的函数,一个创建一级目录,一个创建多级目录。
1.创建一级目录意味着一次只能创建一级目录。在Python中,可以使用os模块提供的mkdir()函数来实现。此功能只能创建指定路径中的最后一级目录。如果此目录的前一级不存在,将引发FileNotFoundError异常。mkdir()函数的基本语法格式如下:
Os.mkdir(path,mode=0777)参数描述:
路径:用于指定要创建的目录。您可以使用绝对路径或相对路径。Mode:用于指定指定的数值模式,默认值为0777。在UNIX系统上,此参数无效或被忽略。例如,要在Windows系统上创建C:\demo目录,可以使用以下代码:
导入操作系统
Os.mkdir(C:\\demo )执行上述代码,将在c盘根目录下创建一个demo目录,如下图所示:
如果创建路径时演示目录已经存在,将引发FileNotFoundError异常,如下图所示:
要解决上述问题,可以在创建目录前判断指定的目录是否存在,不存在时才创建。具体代码如下:
导入操作系统
Path=C:\\demo #指定要创建的目录
如果OS.path.exists (path): #确定该目录是否存在。
Os.mkdir(路径)#创建目录
打印(“目录创建成功”)
否则:
Print(该目录已经存在)注意:如果指定的目录有多级,并且最后一级的上一级目录中没有FileNotFoundError,创建不成功,那么可以使用创建多级目录的方法。
2.创建多级目录使用mkdir()函数只能创建一级目录。如果要创建多级,可以使用os模块提供的makedirs()函数,用于递归创建目录。makedirs()函数的基本语法如下:
操作系统。makedirs (path,mode=0777)参数描述:
路径:用于指定要创建的目录。您可以使用绝对路径或相对路径。Mode:用于指定指定的数值模式,默认值为0777。在UNIX系统上,此参数无效或被忽略。在Windows系统中,我们只是在c盘的根目录下创建了一个demo目录,然后创建了子目录test \ dir \ Mr,可以使用下面的代码:
导入操作系统
OS。make dirs( C:\ \ demo \ \ test \ \ dir \ \ Mr )执行上述代码,并将创建如下图所示的目录:
不及物动词删除目录删除目录可以通过使用os模块提供的rmdir()函数来实现。通过rmdir()函数删除目录时,只有当要删除的目录为空时才起作用。rmdir()函数的基本语法格式如下:
Os.rmdir(path),其中path是要删除的目录。您可以使用相对路径或绝对路径。
例如,要删除刚刚创建的C:\demo\test\dir\mr目录,可以使用下面的代码:
导入操作系统
OS . rmdir( C:\\demo\\test\\dir\\mr )#删除C:\ \ demo \ \ test \ \ dir \ \ Mr目录。运行上面的代码会删除C:\demo\test\dir目录下的Mr目录。
注意:如果要删除的目录不存在,将抛出“找不到文件错误:[WinError 2]系统找不到指定的文件”。不正常。所以在执行os.rmdir()函数之前,建议先判断路径是否存在。可以用os.path.exists()函数来判断。具体代码如下:
导入操作系统
path=C:\\demo\\test\\dir\\mr
如果不是os.path.exists(path):
os.rmdir(路径)
打印(“成功删除”)
否则:
打印(此目录不存在)再学两招:使用rmdir()函数只能删除空目录。如果要删除非空目录,需要使用Python内置的标准模块shutil的rmtree()函数。例如,要删除非空的“C:\demo\test”目录,可以使用以下代码:
导入技能
shuttil . RM tree( C:\ \ demo \ \ test )#删除C:\demo目录中的测试子目录及其内容。七。穿越目录在古代汉语中的意思是走遍四周,游历四方。在Python中,遍历的意义类似于浏览指定目录下的所有目录(包括子目录)和文件。在Python中,os模块的walk()函数用于遍历目录。walk()函数的语法格式如下:
Os.walk (top [,top down] [,on error] [,followlinks])参数描述:
Top:用于指定要遍历的内容的根目录。Topdown:可选参数,用于指定遍历顺序。如果值为True,则表示从上到下遍历(即先遍历根目录);如果值为False,则表示自底向上遍历(最后一级子目录)。默认值为True。Error:可选参数,用于指定错误处理方法,默认情况下忽略。如果不想忽略它,还可以指定一个错误处理函数。通常采用默认。Followlinks:可选参数。默认情况下,walk()函数不会被向下转换为解析到目录的符号链接。将此参数的值设置为True表示它用于指定在支持的系统上访问符号链接所指向的目录。返回值:返回包含3个元素(目录路径,目录名,文件名)的元组生成器对象。其中dirpath表示当前遍历的路径,是一个字符串;Dirnames表示当前路径中包含的子目录,是一个列表;Filename表示当前路径中包含的文件,它也是一个列表。例如,要遍历指定的目录“D:\Python\Code”,可以使用以下代码:
导入操作系统#导入操作系统模块
tuples=OS . walk( D:\ \ Python \ \ Code )# Traverse D:\ Python \ Code \ 01
对于元组中的tuple 1:#通过循环遍历结果。
Print(tuple1, \n) #输出每一级目录元组。如果,目录“D:\Python\Code”包含如图所示的内容:
执行上述代码,将显示下图所示的结果:
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。