版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/l1028386804/article/details/83041603
转载请注明出处:https://blog.csdn.net/l1028386804/article/details/83041603
1、操作文件和目录
在Python中对文件和目录的操作经常用到os模块和shutil模块。
- 获得当前Python脚本工作的目录路径:os.getcwd()
- 返回指定目录下的所有文件和目录名:os.listdir()。例如:返回C盘下的文件:os.listdir('c:\\')
- 删除一个文件:os.remove(filepath)
- 删除多个空目录: os.removedirs(r'd:\python')
- 检验给出的路径是否是一个文件: os.path.isfile(filepath)
- 检验给出的路径是否是一个目录: os.path.isdir(filepath)
- 判断是否是绝对路径: os.path.isabs()
- 检验路径是否是真的存在os.path.exists()。例如检测D盘下是否有Python文件夹:os.path.exists(r:'d:\python')
- 分离一个路径的目录名和文件名:os.path.split()。例如:os.path.split(r'/home/lyz/lyz.txt'),返回一个元组('/home/lyz', 'lyz.txt')
- 分离扩展名: os.path.splitext()。例如:os.path.splitext(r'/home/lyz/lyz.txt'),返回的结果是一个元组('/home/lyz/lyz', '.txt')
- 获取路径名:os.path.dirname(filepath)
- 获取文件名:os.path.basename(filepath)
- 获取和设置环境变量: os.getenv()与os.putenv()
- 给出当前平台使用的行终止符。os.linesep。Windows使用'\r\n',Linux使用'\n', Mac使用'\r'
- 指示你正在使用的平台: os.name。对于Windows为'nt',对于Linux/Unix,它是'posix'
- 重命名文件或目录: os.rename(old, new)
- 创建多级目录: os.makedirs(r'c:\python\test')
- 创建单个目录: os.mkdir('test')
- 获取文件属性: os.stat(file)
- 修改文件权限与时间戳:os.chmod(file)
- 获取文件大小: os.path.getsize(filename)
- 复制文件夹: shutil.copytree("olddir", "newdir")。olddir和newdir都只能是目录,且newdir必须不存在。
- 复制文件: shutil.copyfile("oldfile", "newfile"), oldfile和newfile都只能是文件; shutil.copy("oldfile", "newfile"),oldfile只能是文件,newfile可以是文件,也可以是目标目录
- 移动文件(目录) shutil.move("oldops", "newops")
- 删除目录: os.rmdir("dir"), 只能删除空目录; shutil.rmtree('dir'),空目录、有内容的目录都可以删除。
2、Python序列化
把内存中的变量变成可存储或可传输的过程, 就是序列化。将内存中的变量序列化之后,可以把序列化后的内容写入磁盘,获取通过网络传输到别的机器上,实现程序状态的保存和共享。反过来,把变量内容从序列化的对象重新读取到内存,称为反序列化。
在Python中提供了两个模块:cPickle和pickle来实现序列化。一般编程的时候,采取的方案是先导入cPickle模块,如果此模块不存在,再导入pickle模块。示例如下:
try:
import cPickle as pickle
except ImportError:
import pickle
pickle实现序列化主要是使用dumps方法或dump方法。dumps方法可以将任意对象序列化成一个str,然后可以将这个str写入文件进行保存。在Python Shell中示例如下:
>>> import cPickle as pickle
>>> d = dict(url = 'index', title = '首页', content = '首页')
>>> pickle.dumps(d)
如果使用dump方法,可以序列化后的对象直接写入文件中:
>>> f = open(r'd:\dump.txt', 'w')
>>> pickle.dump(d, f)
>>> f.close()
pickle实现反序列化使用的是loads方法或load方法。把序列化后的文件从磁盘上读取为一个str,然后使用loads方法将这个str反序列化为对象,或者直接使用load方法将文件直接反序列化为对象,如下所示:
>>> f = open(r'd:\dump.txt', 'rb')
>>> d = pickle.load(f)
>>> f.close()
>>> d
通过返序列化,存储为文件的dict对象,又重新恢复出来,但是这个变量个原变量没有什么关系,只是内容一样。