【Python】Python语法基础——操作文件、目录 os模块

如果我们想在Python程序中操作文件、目录,我们可以使用Python内置的os模块,来直接调用操作系统提供的相关的接口函数。

操作文件和目录的函数一部分放在os模块中,一部分放在os.path模块中。

下面列举了常用的一些文件、目录操作(如果需要完整资料,可以查询 官方docs ):

1、 目录操作(os模块)

1.1 获取当前工作目录

>>> os.getcwd()
'/home/ming/桌面/python'

1.2 切换工作目录

>>> os.chdir('../')                                                        
>>> os.getcwd()                                                            
'/home/ming/桌面'

1.3 获取指定目录下所有文件和目录名

os.listdir(path=’.’)

返回指定的文件夹下包含的文件或文件夹的名字的列表,需要注意的是

  • 列表按任意顺序排列
  • 不包含特殊条目 ‘.’ 和 ‘…’,即使它们确实在目录中存在
>>> os.listdir('../DrClient/')
['hostinfo.sh',
 '201630664345',
 'drcomauthsvr',
 'debug.log',
 'translator',
 'DrClientConfig',
 'DrClientLinux.rcc',
 'privillege.sh',
 'drcomauthsvr.drsc',
 'DrClientLinux',
 'drcomrulesvr.drsc',
 'change.sh',
 'test_upeate_request']

1.4 创建目录

os.mkdir(path)

创建指定的单层目录,如果父目录(上一级目录)不存在,则无法创建成功

>>> os.mkdir('dirA/')
>>> os.listdir('./')
['dirA']
>>> os.mkdir('dirB/dirC')
FileNotFoundError  

os.makedirs(path)

创建指定的目录,如果父目录不存在,则递归创建父目录,经常结合os.path.exits()使用

if not os.path.exists( checkpoint_dir ):
	os.makedirs( checkpoint_dir )

1.5 删除目录

os.rmdirs(path)

2. 路径操作(os.path模块)

2.1 判断一个路径是否存在

>>> os.path.exists('/Users/michael')                                               
True
>>> os.path.exists('/111/222')                                           
False

2.2 获取相对路径的绝对路径

输入一个相对路径,返回对应的绝对路径

>>> os.path.abspath('.')                                                  
'/Users/michael'
>>> os.path.abspath('..')   
'/Users'
>>> os.path.abspath('game') 
'/Users/michael/game'

2.3 路径拼接

如果我们要把两个或多个路径组件拼接成一个,不建议直接拼字符串,更合适的方式是通过os.path.join()函数。

os.path.join()

连接规则:

  1. 相对路径的叠加。如果路径组件是相对路径,则函数会自动在组件的连接处加上路径分隔符(在Linux/Unix/Mac下为/,在Windows下为\,后面以前者举例)
  2. 绝对路径的排查。如果路径组件中有绝对路径,则函数从最后一个绝对路径组件开始进行拼接,在它之前的所有路径组件均会被舍弃

Linux下

>>> path = os.path.join('/Users/michael', 'file.txt')
'/Users/michael/file.txt'

Windows下

>>>os.path.join('C:\\Users', 'C:\\Users', 'game')
'C:\\Users\\game'

2.4 路径拆分

os.path.split()函数,可以把一个路径拆分为两部分,后一部分总是最后级别的目录或文件名:

>>> os.path.split('/Users/michael/testdir/file.txt')
('/Users/michael/testdir', 'file.txt')
>>> os.path.dirname('/Users/michael/testdir/file.txt')                                  
'/Users/michael/testdir'
>>> os.path.basename('/Users/michael/testdir/file.txt')                                 
'file.txt'

需要注意的是,这些合并、拆分路径的函数并不要求目录和文件要真实存在,它们其实只是对字符串进行操作。


注意事项

一般来讲,我们在代码中涉及到文件的操作时,最好使用文件的相对路径,这样在你的程序迁移到别人的电脑时,可以保证不会出现文件读取异常的错误(不同电脑存放代码和数据的绝对位置一般不同)

在Python中以绝对路径或者相对路径导入文件的方法


参考:
Python目录和路径操作
操作文件和目录 - 廖雪峰的官方网站

你可能感兴趣的:(Python)