文件和文件夹的操作,需注意:如果文件或者文件夹不在当前工作目录,需绝对路径(如r'G:/python/aa')。
获取工作当前目录:os.getcwd()。
可以修改当前工作目录:os.chdir(新目录)。
修改的当前工作目录仅在当前模块可用。若使用Python自带IDLE,仅在当前解释器窗口可用,重新打开也将失效。
参数:path,文件夹名。
若文件夹已经存在,则报错FileExistsError。因此先判断是否没有该文件夹,若没有再创建。
补充:os.path.exists(...):判断文件或文件夹是否存在。返回True/False。
if 条件语句,若只有简单一句,可以写在一行。
import os
folder = r'G:/python/aa'
if not os.path.exists(folder): os.mkdir(folder)
参数:path,文件夹名。
注意:只能删除空文件夹。若要彻底删除有文件的文件夹,使用shutil.rmtree(...)。
若文件夹不存在,则报错FileNotFoundError。
若文件夹中有文件,则报错OSError。
先判断文件夹是否存在,且是否没有文件在里面,再删除。
补充:os.listdir(...):遍历文件夹下所有文件(不含子文件夹下的文件),返回列表。
not os.listdir(...):空列表,返回True。若列表有元素,返回False。
条件表达式里返回False的情况:False、0、空值None、空序列对象(空列表、空元祖、空集合、空字典、空字符串)、空range对象、空迭代对象。
import shutil
folder = r'G:/python/aa'
if os.path.exists(folder) and not os.listdir(folder): os.rmdir(folder)
若文件夹不存在,则报错FileNotFoundError。因此先判断文件夹是否存在,若存在则删除。
import shutil
folder = r'G:/python/aa'
if os.path.exists(folder): shutil.rmtree(folder)
参数:path,文件名。
若文件不存在,则报错FileNotFoundError。因此先判断文件是否存在,若存在则删除。
import os
file = r'G:\python\aa\new.xlsx'
if os.path.exists(file): os.remove(file)
参数:原文件名,新文件名。
注意:若原文件名不存在,则报错FileNotFoundError。若新文件名已经存在,则报错FileExistsError。
(1)若路径相同,只是新文件名与原文件名不同,则文件重命名。
import os
os.chdir(r'G:\python\aa')
os.rename('aa.xlsx', 'new.xlsx')
(2)若路径与原路径不同,文件名相同,相当于文件移动。
import os
os.rename(r'G:\python\abc\aa.xlsx', r'G:\python\aa.xlsx')
(3)若文件名和路径与原文件名原路径都不同,相当于移动文件同时修改文件名。
import os
os.rename(r'G:\python\abc\aa.xlsx', r'G:\python\new.xlsx')
参数:原文件夹,复制后的文件夹(同时可重命名)。
返回:字符串。【复制后的文件夹名】
注意:若原文件夹不存在,则报错FileNotFoundError。若复制后的文件夹名已经存在,则报错FileExistsError。
import shutil
shutil.copytree(r'G:/python/aa', r'G:/abc') # 返回:'G:/abc'
参数:原文件,复制后的文件(同时可重命名)。
返回:字符串。【复制后的文件名】
若原文件不存在,则报错FileNotFoundError。但是如果复制后的文件名已经存在,不会报错,依然返回复制后的文件名。
import shutil
# 将new.xlsx文件复制(且重命名)
file = r'G:\python\aa\new.xlsx'
copyFile = r'G:\python\new_copy.xlsx'
shutil.copy(file, copyFile) # 返回:'G:\\python\\new_copy.xlsx'