抽时间回顾2年前自己做过的python工具,突然感觉不像自己写的,看来好久没用过python的字典和文件操作了,查询资料和网页,整理如下:

一、字典

键值对的集合(map)

字典是以大括号“{}”包围的数据集合

与列表区别:字典是无序的,在字典中通过键来访问成员。

字典是可变的,可以包含任何其他类型

声明:

Dic = {key1:value1,key2:value2}

访问 Dic[key1]将得到value1

常用字典操作:

dic.keys()获得键的列表

dic.values()获得值的列表

dic.copy()复制字典

dic.pop(k)删除键k ,若没有k,抛出KeyError的异常

dic.get(k)获得键k的值

dic.clear()清空字典

dic.update()更新成员,若成员不存在,则加入

dic.items()获得由键和值组成的列表

可以通过

>>>help(dict) 查看详情

例子:

dic= {'DZ':['','DZ@dzblog.com'],
... 'Alice':['','Alice@dzblog.com'],
... 'Joe':['','Joe@dzblog.com'],
... 'Paul':['','Paul@dzblog.com'],
... }

获得键的值:

>>> dic['DZ']
['', 'DZ@cnblogs.com']
>>> dic.get('DZ')
['', 'DZ@cnblogs.com']
#获得键的列表:
>>> dic.keys()
['Paul', 'DZ', 'Alice', 'Joe']
#获得值得列表:
>>> dic.values()
[['', 'Paul@cnblogs.com'], ['', 'DZ@cnblogs.com'], ['', 'Alice@cnblogs.com'], ['', 'Joe@cnblogs.com']]
#获得由键值组成的列表:
>>> dic.items()
[('Paul', ['', 'Paul@cnblogs.com']), ('DZ', ['', 'DZ@cnblogs.com']), ('Alice', ['', 'Alice@cnblogs.com']), ('Joe', ['', 'Joe@cnblogs.com'])]

#更新成员,若成员不存在,相当于加入,若存在则修改。

>>> dic.update({'DZ':['','dzblog@cnblogs.com']})
>>> dic
{'Paul': ['', 'Paul@cnblogs.com'], 'DZ': ['', 'dzblog@cnblogs.com'], 'Alice': ['', 'Alice@cnblogs.com'], 'Joe': ['', 'Joe@cnblogs.com']}
>>> dic.update({'Hawaii':['1xxxxxxx','xx@cnblogs.com']})
>>> dic
{'Hawaii': ['1xxxxxxx', 'xx@cnblogs.com'], 'Paul': ['', 'Paul@cnblogs.com'], 'DZ': ['', 'dzblog@cnblogs.com'], 'Alice': ['', 'Alice@cnblogs.com'], 'Joe': ['', 'Joe@cnblogs.com']}

#删除成员

>>> dic.pop('Hawaii')
['1xxxxxxx', 'xx@cnblogs.com']
>>> dic
{'Paul': ['', 'Paul@cnblogs.com'], 'DZ': ['', 'dzblog@cnblogs.com'], 'Alice': ['', 'Alice@cnblogs.com'], 'Joe': ['', 'Joe@cnblogs.com']}

#复制字典和清空字典

>>> dic2 = dic.copy()
>>> dic2
{'Paul': ['', 'Paul@cnblogs.com'], 'DZ': ['', 'dzblog@cnblogs.com'], 'Alice': ['', 'Alice@cnblogs.com'], 'Joe': ['', 'Joe@cnblogs.com']}
>>> dic2.clear()
>>> dic2
{}

note:若dic2 = dic,这时清空dic2,dic的数据也会被清空。若dic2=dic.copy(),这时清空dic2,dic的数据不会被清空。

二:文件操作

f = open(r'C:\Movie\test2.txt','w') #直接打开一个文件,如果文件不存在则创建文件,只能只用写命令

f = open(r'C:\Movie\test2.txt')# 打开一个文件,只能只用读命令

f.read([size]) #size为读取的长度,以byte为单位,如果不写则读取全部内容

f.readline([size]) #读一行,如果定义了size,有可能返回的只是一行的一部分。每读取一次,文件操作符向下移动一行。

f.readlines([size])#把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。

关于open 模式:

w     以写方式打开
a     以追加模式打开
r+     以读写模式打开
w+     以读写模式打开 (参见 w )
a+     以读写模式打开 (参见 a )
rb     以二进制读模式打开
wb     以二进制写模式打开 (参见 w )
ab     以二进制追加模式打开 (参见 a )
rb+    以二进制读写模式打开 (参见 r+ )
wb+    以二进制读写模式打开 (参见 w+ )
ab+    以二进制读写模式打开 (参见 a+ )

f.write(“str”)  #把str写到文件中,write()方法不会在str后加上一个换行符

f.writelines(seq) #把seq的内容全部写到文件中(多行一次性写入)。这个函数也只是忠实地写入,不会在每行后面加上任何东西。

f.close() #关闭文件。在读命令或者写命令结束时,需要用关闭。如果文件关闭后依然操作,会抛出ValueError: I/O operation on closed file

f.tell() #返回文件操作标记的当前位置,以文件的开头为起点

fp.next() #返回下一行内容,并将文件操作标记位移到下一行。把一个file用于for … in file这样的语句时,就是调用next()函数来实现遍历的。

fp.seek(offset[,whence])#将文件操作标记为移动到offset位置。

>>> f = open(r'c:\Movie\test.txt')
>>> f.next()
'This is the first line\n'
>>> f.next()
' Second line\n'
>>> f.readline()
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
ValueError: Mixing iteration and read methods would lose data
>>> f.next()
' third line\n'
>>> f.seek(0)
>>> f.readline()
'This is the first line\n'
>>> f.readlines()
[' Second line\n', ' third line\n', ' end']

三:目录操作

创建单个目录:
os.mkdir("test")
创建多级目录:
os.makedirs(r"c:\Moive\test.txt")
复制文件:
shutil.copyfile("oldfile","newfile")#oldfile和newfile都只能是文件
shutil.copy("oldfile","newfile") # oldfile只能是文件夹,newfile可以是文件,也可以是目标目录
复制文件夹:
shutil.copytree("olddir","newdir") #olddir和newdir都只能是目录,且newdir必须不存在
重命名文件(目录)
os.rename("oldname","newname") #文件或目录都是使用这条命令
移动文件(目录)
shutil.move("oldpos","newpos")   
删除一个文件
os.remove("file")
删除多个目录:
os.removedirs(r"c:\python")
删除目录
os.rmdir("dir")只能删除空目录
shutil.rmtree("dir")    空目录、有内容的目录都可以删
转换目录
os.chdir("path")   换路径

检验给出的路径是否是一个文件:os.path.isfile() 返回true或false

检验给出的路径是否是一个目录:os.path.isdir() 返回true或false

检验给出的路径是否真地存:os.path.exists() 返回true或false

返回一个路径的目录名和文件名:os.path.split()

>>> os.path.split(r"c:\Movie\test.txt")
('c:\\Movie', 'test.txt')

返回指定目录下的所有文件和目录名:os.listdir()

获取文件大小:os.path.getsize(filename)#得到的是字节(byte)

处理路径的niubility方法 path = os.path.join(*self.directory)

eg. filepath = os.path.join(directorypath,filename)

>>> os.path.join("c:","Movie","text.txt")
'c:Movie\\text.txt'

Python复习笔记-字典和文件操作的更多相关文章

  1. python3笔记十八:python列表元组字典集合文件操作

    一:学习内容 列表元组字典集合文件操作 二:列表元组字典集合文件操作 代码: import pickle  #数据持久性模块 #封装的方法def OptionData(data,path):    # ...

  2. Python学习笔记八:文件操作(续),文件编码与解码,函数,递归,函数式编程介绍,高阶函数

    文件操作(续) 获得文件句柄位置,f.tell(),从0开始,按字符数计数 f.read(5),读取5个字符 返回文件句柄到某位置,f.seek(0) 文件在编辑过程中改变编码,f.detech() ...

  3. python学习笔记(十)、文件操作

    在前面我们了解到了没得模块,其中有一个模块为fileinput,为文件操作模块,不知道小伙伴们是否还记得? 1 打开文件 要打开文件,可以使用fileinput中的fileinput.input函数进 ...

  4. Python学习笔记七:文件操作

    文件操作 对照一个word文件的操作方式,来体会文件操作的内容 打开文件:f=open(“file”),提示编码错误,windows默认是GBK f=open(“file”,encoding=”utf ...

  5. (Python )格式化输出、文件操作、json

    本节学习Python的格式化输出,文件操作以及json的简单用法 1.格式化输出 将非字符串类型转换成字符串,可以使用函数:str() 或者repr() ,(这两个函数的区别目前我还没搞懂,求解答) ...

  6. Java基础复习笔记系列 七 IO操作

    Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...

  7. Windows phone 8 学习笔记(2) 数据文件操作

    原文:Windows phone 8 学习笔记(2) 数据文件操作 Windows phone 8 应用用于数据文件存储访问的位置仅仅限于安装文件夹.本地文件夹(独立存储空间).媒体库和SD卡四个地方 ...

  8. python【第二篇】列表、元组、字典及文件操作

    本节内容 列表 元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1.列表 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作:列表有序.可变.元素 ...

  9. python基础(六)dict字典和文件操作open

    字典dict 使用key来标注value的数据类型,key和value是一一对应的.在字典中key是唯一的,所以字典也是无序的. #定义一个字典 dict = { 'name' : 'sylar', ...

随机推荐

  1. CSS属性之 -- overflow

    overflow可以实现隐藏超出对象内容,同时也有显示与隐藏滚动条的作用,overflow属性有四个值:visible (默认), hidden, scroll, 和auto.同样有两个overflo ...

  2. 单例模式(Singleton Pattern)

    动机: 在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性.以及良好的效率. 如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例? 这应该是类设 ...

  3. This tag and its children can be replaced by one <TextView/> and a compound drawable

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  4. (转)PhoneGap开发环境搭建

    (原)http://www.cnblogs.com/Random/archive/2011/12/28/2305398.html PhoneGap开发环境搭建   项目中要用PhoneGap开发,了解 ...

  5. OD调试篇12

    Delphi的逆向 先看看今天需要破解的程序. 打开程序先出现了一个nag窗口,然后是unregistered未注册的提示,以及关于里的需要注册. 拖进die看了看      就是delphi写的.那 ...

  6. IOS开发-当遇到tableView整体上移时的解决方案

    方案一在使用了navigationController后,当界面进行跳转往返后,时而会出现tableView上移的情况,通常会自动上移64个像素,那么这种情况,我们可以关闭tableView的自动适配 ...

  7. CheckBoxList 用法

    <asp:CheckBoxList ID="cblqf" ForeColor="#4d6fc8" runat="server" Rep ...

  8. 数论 UVA 11889

    有关数论的题目,题目大意是给你两个数a和c,c为a和另一个数b的最小公倍数,要求你求出b的最小值.由最大公约数gcd(a,b)和最小公倍数lcm(a,b)之间的关系可知,lcm(a,b)*gcd(a, ...

  9. Python中reactor,factory,protocol

    最为简单的情况下,除了了解清reactor的简单使用,你还要了解Protocol和Factory.它们最终都会由reactor的侦听建立和run来统一调度起来. 建立服务器的第一个要解决的问题就是服务 ...

  10. ASP.NET应用程序与页面生命周期

    http://www.cnblogs.com/suizhouqiwei/archive/2012/08/15/2637775.html