python中关于文件和目录的操作,经常应用OS模块。import os:
一、关于路径、文件名
(一)获取当前运行文件的路径、文件名
1、__file__ 直接获取当前运行文件的:绝对路径+文件名
‘__file__’ 是一个str,不是函数,不能' __file__()'使用,会报错。
filename = __file__ # __file__是一个str,并非方法 print(filename) # D:/pycharm/dongxuew/hello_world.py
2、os.getcwdb() 和 os.getcwd() 直接获取当前工作目录的绝对路径
仅获取当前工作目录的路径,不含文件名。getcwdb()返回bytes;getcwd()返回str。
# 得到当前工作目录的路径 print(os.getcwd()) # D:\pycharm\dongxuew print(os.getcwdb()) # b'D:\\pycharm\\dongxuew'
(二)获取指定文件file的路径、文件名
1、os.path.dirname(file) 获取指定file的路径,不含文件名
2、os.path.filename(file) 获取指定file的文件名,不含路径
3、os.path.split(file) 获取指定file文件的路径和文件名,以元组形式返回
import os filename = __file__ # 可以指定当前文件,也可以指定任意完整路径文件 current_dirname = os.path.dirname(filename) # 路径名,不含文件名 current_filename = os.path.basename(filename) # 文件名,不含路径 path_file = os.path.split((filename)) # (路径名,文件名) print(current_dirname) # D:/pycharm/dongxuew print(current_filename) # hello_world.py print(path_file) # ('D:/pycharm/dongxuew', 'hello_world.py')
(三)有关路径、文件名的各种判断
1、os.path.exists() 判断路径或文件是否存在
文件或路径,存在返回True,不存在返回False。
# 判断路径是否存在 print(os.path.exists('.\\')) # True print(os.path.exists('..\\')) # True print(os.path.exists('...\\')) # False print(os.path.exists('D:/pycharm/dongxuew')) # True print(os.path.exists('D:/pycharm/lucy')) # False print(os.path.exists('D:/pycharm/dongxuew/hello_world.py')) # True
2、os.path.isabs() 判断是否使用绝对路径
使用绝对路径返回True,相对路径返回False。
# 判断是否绝对路径 print(os.path.isabs('D:/pycharm/dongxuew/hello_world.py')) # True print(os.path.isabs('.\\')) # False print(os.path.isabs('D:/pycharm/dongxuew')) # True
3、判断是路径还是文件
os.path.isdir()判断是否是目录;os.path.isfile()判断是否是文件。都返回布尔值。
print(os.path.isdir('D:/pycharm/dongxuew/hello_world.py')) # False print(os.path.isdir('D:/pycharm/dongxuew')) # True print(os.path.isfile('D:/pycharm/dongxuew/hello_world.py')) # True print(os.path.isfile('D:/pycharm/dongxuew')) # False
二、 os.listdir(dir) 获取dir目录下的所有文件和目录名
默认获得当前工作目录下的目录及文件名;
通过dir指定目录,获取其下的文件及目录名。可以使用绝对路径,也可以使用相对路径(.\\当前目录;..\\上一级目录)。
# 默认得到当前工作目录下的文件和目录名 print(os.listdir()) # 得到指定工作目录下的文件和目录名 # 绝对路径 print(os.listdir('D:\pycharm')) # 相对路径: .\\当前目录,..\\上一级目录 print(os.listdir('..\\'))
三、 创建
1、os.mkdir() 创建文件夹
只能创建指定路径下的文件夹,文件夹已存在时报错,文件夹的父目录不存在时报错。
2、os.makedirs() 创建目录及文件夹
可同时创建文件夹及目录。文件夹已存在时报错,文件夹父目录不存在时创建。也可只创建文件夹,如mkdir()。
# mkdir仅允许创建文件夹 os.mkdir('D:/pycharm/new_mkdir/hi') # 创建目录hi,父目录已存在 # makedirs允许同时创建文件夹及目录;当目录存在时,功能相当于mkdir os.makedirs('D:/pycharm/new_new_mkdir/hii') # 创建目录:new_new_mkdir/hi
四、 复制
shutil.copytree(src,dst,symlinks=False) 复制文件目录src及其目录内全部文件到dst
注意,dst可以是文件夹、也可以是文件,若dst已存在会报错。使用symlinks控制复制的是原文件还是快捷方式,默认复制原文件。
import shutil # 复制整个文件目录, # symlinks=False是默认值,复制的一个连接,即快捷方式;设置symlinks=True,复制的是文件 # shutil.copytree('copy_file_test','copy_tree') # 复制原文件 # shutil.copytree('copy_file_test','copy_tree_symliks',symlinks=True) # 复制快捷方式 shutil.copytree('copy_file_test','first_xml_.xml')
五、 删除
(一)os.rmdir() 删除空文件夹
rmdir删除文件夹时,文件夹必须为空,不为空时报错。
os.rmdir('D:/pycharm/new_new_mkdir') # 指定被删除文件夹 os.rmdir('.\\new_new_mkdir') # 相当路径
(二)shutil.rmtree() 递归删除目录及文件夹
import shutil shutil.rmtree('copy_tree')
六、移动 和 重命名
(一)os.rename() 与文件使用同一个
注意:使用时,需要目标文件夹不存在、但路径存在。可同时移动整个目录。
os.rename(r'..\\newmake_dir',r'.\\newmake_dir')
(二)shutil.move(src,dst)
注意:dst的路径需要存在。若dst是文件夹,可以存在、也可以不存在。若dst是文件,存在时报错,不存在时新建dst文件名称的文件夹。
import shutil # # 目标目录存在,直接移动至目标目录 # shutil.move('copy_tree_symliks','copy_file_test') # # 目标目录不存在,创建目录后移动 # shutil.move('copy_file_test','copy_file_test_') # 目标是已存在文件 # shutil.move('copy_file_test_\\copy_tree_symliks','first_xml.xml') # # FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'first_xml.xml' # 目标是不存在文件,在目标路径下创建文件夹后移动,文件夹的名字为目标文件名 shutil.move('copy_file_test_\\copy_tree_symliks','.\\first_xml_.xml') # 创建名为’first_xml_.xml’的文件夹后移动
除了移动目录,也可以重命名目录。
import shutil # 重命名 shutil.move('first_xml_.xml','del_dir')
七、 os.chdir(new_dir) 跳转目录
从当前工作目录跳转至指定new_dir目录下,指定目录不存在时报错。
print(os.getcwd()) # 当前目录 os.chdir(r'..\\') # 跳转至上一级目录 print(os.getcwd()) #跳转后目录
浙公网安备 33010602011771号