Python入门知识点分享——(十)OS文件、目录方法

发布时间:2023年12月28日

os模块是一个用于与操作系统进行交互的模块。它提供了一些函数来执行操作系统相关的任务,例如文件和目录操作,进程管理,环境变量等,要使用这个模块,必须先进行导入,也就是俗称的“导包”,然后才可以调用相关的各种功能。而这一部分知识也是Python文件操作的最后一块。

首先是对文件进行操作,先前介绍的open函数与其他文件函数缺少了重命名和删除文件的方法,这些操作由os模块来完成。

总览

rename

remove

mkdir

chdir

getcwd

rmdir?

system

startfile

listdir

walk

path


rename

os.rename用于重命名文件或目录,函数一共有两个参数,分别是原名称和新名称。

import os
os.rename('word_work2.txt', 'paper2.txt')

使用该方法时,需要注意以下几点:

  • 两个参数都必须是字符串类型。如果是其他类型会报错。
  • 如果新名称参数指定的路径已经存在相同的文件名会报错。
  • 如果要对一个目录进行重命名,那么该目录必须为空目录。

remove

os.remove用于删除文件,只需要提供文件的相对路径即可。

import os
os.remove('paper2.txt')

此外os.unlink也具备相同功能。

import os
os.unlink('paper2.txt')

?至此对文件的操作就全部介绍完了,下面是对目录的操作。

目录是一种用于组织和存储文件的文件系统结构,也就是我们所熟知的文件夹。目录可以包含其他文件和子目录。

mkdir

os.mkdir是当前目录下创建新的目录,与文件不同的是,目录不需要后缀名。如果要创建多层嵌套的目录,可以使用os.makedirs函数,这个函数可以递归创建目录。

import os
os.mkdir('test1')
os.makedirs('test2/chapter1')

?

chdir

os.chdir用于改变当前的目录,注意不是重命名当前目录,而是跳转到其他文件夹下,参数类型是相对路径。

import os
os.chdir('test1')

那么我们如何验证我们的目录发生了改变呢,这就用到了getcwd()方法。?

getcwd

os.getcwd用来获取当前的工作目录。?

import os
message1 = os.getcwd()
print(message1)
os.chdir('test1')
message2 = os.getcwd()
print(message2)
os.chdir('../test2/chapter1')
message3 = os.getcwd()
print(message3)
D:\pythondocument
D:\pythondocument\test1
D:\pythondocument\test2\chapter1

需要注意的是,getcwd()函数返回的是一个字符串,表示当前工作目录的绝对路径,输入的参数则是相对路径,在进行第二次改变目录时,要先输入..回退到上一级。

rmdir?

os.rmdir被用来删除一个空的目录。

import os
os.rmdir('test2/chapter1')

system

os.system用于执行系统命令,既可以用上文中的各类函数做参数,也可以直接打开文本或可执行文件,即exe文件。

import os
os.system('mkdir test3')
os.system('D:\pythondocument\word_work.txt')
os.system('notepad.exe')

startfile

os.startfile用来打开一个文件或者目录,参数依然是字符串格式的路径,相对路径和绝对路径都可以,在字符串前可以加“r”表示读取来规避一些编译器的warning。

import os
os.startfile(r'D:\pythondocument\Marx.jpg')
os.startfile('Marx.jpg')

listdir

os.listdir用于列出指定目录中的所有文件和文件夹,参数支持相对路径和绝对路径。

import os
path1 = os.listdir('D:\pythondocument\\test2')
print(path1)
path2 = os.listdir('test2')
print(path2)
['chapter3', 'word_work.txt']
['chapter3', 'word_work.txt']

注意字符串中的转义字符,document后的反斜杠被编译器标记为了空格,需要两个反斜杠才能表示目录层级。?

walk

os.walk是一个用于遍历目录树的函数。它返回一个生成器(generator),每次迭代都会生成一个包含三个元素的元组:当前文件夹路径、当前文件夹下的子文件夹列表、当前文件夹下的文件列表。

lst2 = os.walk(path)
print(lst2, type(lst2))
for aa, bb, cc in lst2:
    for ww in bb:
        print(os.path.join(aa, ww))
        # 这里join后面不能用''了,会被误认为是字符串
        # aa是目录的绝对路径,ww是当前文件夹下每一个子文件夹的名字,连起来就是子文件夹的路径
        # 替换成 ww in cc,可以得到当前文件夹下面每一个文件的路径
print(aa)
print(bb)
print(cc)
print('————————————————————')
# aa,bb,cc只是随便起的三个变量名,输出会按绝对路径、当前文件夹下包含的子文件夹、当前文件夹下的文件的顺序输出
# walk的相关情况在csdn收藏夹里,————分割线是为了看清楚遍历次数
# walk返回的是一个包含着目录下所有路径、子目录、文件的元组,即便lst2的类型是generator(迭代器)
<generator object _walk at 0x0000022A13641F50> <class 'generator'>
D:\pythondocument\document\A
D:\pythondocument\document\hh
D:\pythondocument\document\A\B
D:\pythondocument\document\A\B\C
D:\pythondocument\document\hh
[]
[]
————————————————————

?这一部分的内容有点超纲,大家可以忽略直接看path模块,walk函数在我之前学习内容比较琐碎的时候当做一个文件统计器来使用,也曾在Linux配置中使用过。上述代码是当时留下的一个demo,用法在注释里已经写得很详细了,感兴趣的小伙伴可以自行了解。这是注释中提到的收藏夹专栏http://t.csdnimg.cn/Q0tpL

path

os.path用于处理文件路径和名称,它作为一个模块而非单一的函数,包含了一些常用的路径操作方法和常量。

常用的os.path模块函数和常量如下:

  • - os.path.abspath(path):返回指定路径的绝对路径。
  • - os.path.basename(path):返回路径中的文件名部分。
  • - os.path.dirname(path):返回路径中的目录部分。
  • - os.path.exists(path):判断路径是否存在。
  • - os.path.isfile(path):判断路径是否为文件。
  • - os.path.isdir(path):判断路径是否为目录。
  • - os.path.join(path1, path2, ...):将多个路径组合成一个路径。
  • - os.path.split(path):将路径分割成目录和文件名两部分。
  • - os.path.splitext(path):将路径分割成文件名和扩展名两部分。
  • - os.path.getsize(path):返回文件的大小(字节数)。
  • - os.path.isabs(path):判断路径是否为绝对路径。
import os
path1 = os.path.abspath('test2')
# 返回指定路径的绝对路径。
print(path1)
path2 = os.path.basename('D:\pythondocument\\test2\word_work.txt')
# 返回路径中的文件名部分。
print(path2)
path3 = os.path.dirname('D:\pythondocument\\test2')
# 返回路径中的目录部分。
print(path3)
path4 = os.path.exists('test2')
# 判断路径是否存在。
print(path4)
path5 = os.path.isfile('test2\\word_work.txt')
# 判断路径是否为文件。
print(path5)
path6 = os.path.isdir('test2\\word_work.txt')
# 判断路径是否为目录。
path7 = os.path.join('test2', 'word_work.txt')
# 将多个路径组合成一个路径。
print(path7)
path8 = os.path.split('D:\pythondocument\\test2\word_work.txt')
# 将路径分割成目录和文件名两部分。
print(path8)
path9 = os.path.splitext('test2\word_work.txt')
# 将路径分割成文件名和扩展名两部分。
print(path9)
path10 = os.path.getsize('D:\pythondocument\\test2\word_work.txt')
# 返回文件的大小(字节数)。
print(path10)
path11 = os.path.isabs('D:\pythondocument\\test2')
# 判断路径是否为绝对路径。
print(path11)
D:\pythondocument\test2
word_work.txt
D:\pythondocument
True
True
test2\word_work.txt
('D:\\pythondocument\\test2', 'word_work.txt')
('test2\\word_work', '.txt')
393
True

在上述示例中,我们展示了如何使用os.path模块中的一些函数和常量来处理路径和文件名。可以根据需要选择使用适合的函数来完成相应的操作。

?到目前为止,我们一共分了三次来介绍Python中文件和目录的操作方法,这是三篇中的最后一篇文章,下面我们会一同回顾循环结构的知识,谢谢大家。

文章来源:https://blog.csdn.net/qq_62530454/article/details/135243244
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。