Python之——IO编程

版权声明:本文为博主原创文章,未经博主允许不得转载。 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对象,又重新恢复出来,但是这个变量个原变量没有什么关系,只是内容一样。

猜你喜欢

转载自blog.csdn.net/l1028386804/article/details/83041603
今日推荐