python学习笔记三之下(基础篇)

文件操作

打开文件

open(name[,mode[,buffering]])   open函数使用一个文件名作为强制参数,然后返回一个文件对象。python 3.5 把file()删除掉

with open(somefile.txt,‘r‘) as files:

  do_something(files)

with 语句打开文件并把值赋值到变量,之后可以对文件操作。文件在语句结束之后会自动关闭,即使异常引起也会退出。

文件模式

r   #只读模式(默认)

w(>) #写模式

a (>>)  #追加模式

b (二进制模式,如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注;可添加到其他模式中使用)

+ (读/写模式,可添加到其他模式中使用)

U (表示在读取时,可以将 \r \n \r\n自动转换成 \n 与 r 或 r+ 模式同使用)

基本文件方法:

读文件内容

#一次性读取所有内容到内存

obj.read()

#读取文件中的所有行并将其作为列表返回

obj.readlines()

#一次仅读取一行(从当前位置开始一直到一个换行符的出现,也读取这个换行符)

obj.readline()

写文件内容

#写入字符串

obj.write(‘内容‘)
#写入字符串列表(实际上任何序列和可迭代的对象都行),它会把所有的字符串写入文件。

writelines(list)

随即访问

seek(offset[,whence])

把当前位置(进行读和写的位置)移动到由offset定义的位置,where.offset是一个字节(字符)数,whence默认是0,表明偏移量是从文件头

开始计算的(偏移量必须是非负的)whence可以被设置为1(相对于当前位置的移动,offset可以是负的)或者2(相对于文件结尾的移动 )

f = open(‘test2.txt‘,‘w‘)
f.write(‘01234567890123456789‘)
f.seek(5)
f.write(‘hello, world!‘)
f.close()
f = open(‘test2.txt‘,‘r‘)
line = f.read()
print(line)
f.close()

01234hello, world!89

truncate #截断数据,仅保留指定之前数据
f = open(‘test2.txt‘)f.seek(4)f.truncate()  #截断f.seek(4)以后的所有数据,仅保留之前的。f.close()

tell返回当前文件的位置

f = open(‘test2.txt‘)
f.read(2)
f.read(3)
print(f.tell())
f.close()
5

#假设文件中包含中文f = open(‘test2.txt‘,‘r‘,encoding=‘utf-8‘)a = f.seek(2) #文件报错,因为一个汉字占3个字节,seek是按照字节位移

(result, consumed) = self._buffer_decode(data, self.errors, final)UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xbd in position 0: invalid start byte

b = f.read(2)  #读取字符,(在以前版本中一个汉字占3个字节,单读取2个字节将会出现乱码)print(a)c  = f.tell() #返回值还是按照字节来的。print(b)

好04

关闭文件

obj.close()

如果想确保文件被关闭了,可以使用try/finally语句,并且在finally自居中调用close方法。

#Once your file here
try:
    #Write data to your file
finally:
    file.close()

迭代文件内容和文件对象

read(),readline(),readlines()前面都已经提到过,下面介绍另一种方法fileinput

在对一个比较大的文件进行迭代行的操作时,readlines()会占用大量的内存,既可以使用while循环和readline,还可以使用for循环来实现行的迭代。

import fileinput
for line in fileinput.input(filename): #便于遍历多个输入流中的行。
    print(line)

fileinput模块中的函数

input(files[,inplace[,backup]])   #便于遍历多个输入流中的行

filename()              #返回当前文件的名称

lineno()              #返回当前(累计)的行数

filelineno()              #返回当前文件的行数

isfirst()              #检查当前行是否是文件的第一行

isstding()             #检查当前最后一行是否来自sys.stdin

nextfile()              #关闭当前文件,移动到下一个文件

close()               #关闭序列

文件迭代器

f = open(filename)
for i in f:
    print(i)
f.close()

可以对文件迭代器执行和普通迭代器相同的操作,比如将它们转换为字符串列表(list(open(filename))),这样所达到的效果和readlines一样。

f = open(‘log.txt‘,‘w‘)
f.write(‘aaa\n‘)
f.write(‘bbb\n‘)
f.write(‘ccc\n‘)
f.write(‘ddd\n‘)
f.close()
lines = list(open(‘log.txt‘))
print(lines)

[‘aaa\n‘, ‘bbb\n‘, ‘ccc\n‘, ‘ddd\n‘]
时间: 2024-10-31 10:29:09

python学习笔记三之下(基础篇)的相关文章

Python学习笔记三:基础语法

Python编程中理解对象的概念很重要,因为其宗旨是'一切皆对象'.(提前预告) 高级语言Python,Perl和Java等语言有许多相似之处.但是,也存在一些差异. 交互式编程: 脚本式编程 Python IDE 编写.py Python 标识符 区分大小写 以_开头的标识符有特殊意义 以单_开头(_foo)的代表不能直接访问的类属性,需要提供类提供的接口进行访问,不能用from xxx import **而导入. 以双下划线开头(__foo)代表私有成员 以双下划线开头和结尾的(__foo_

Day3: Python学习笔记之计算机基础——网络片

Day3: Python学习笔记之计算机基础--网络片 什么是互联网协议以及为何要有互联网协议? ?互联网协议本质上是为了方便连接两台计算机而指定的一系列统一的标准. osi五层模型 计算机之间要实现数据传输必须要经过以下五层协议: ? 模型 ,协议 ,硬件 ? 应用层, http协议.用户自定义协议 ? 传输层, TCP/UPD协议 ,四层交换机.四层路由器 ? 网络层, IP协议, 三层交换机.路由器 ? 数据链路层, 以太网.电信号分组, 网桥.以太网交换机.网卡 ? 物理层, 传递电信号

OpenCV for Python 学习笔记 三

给源图像增加边界 cv2.copyMakeBorder(src,top, bottom, left, right ,borderType,value) src:源图像 top,bottem,left,right: 分别表示四个方向上边界的长度 borderType: 边界的类型 有以下几种: BORDER_REFLICATE # 直接用边界的颜色填充, aaaaaa | abcdefg | gggg BORDER_REFLECT # 倒映,abcdefg | gfedcbamn | nmabcd

python 学习笔记 三 字典

字典 Python的高效的key/value哈希表结构叫做"dict", dict的内容可以写成一系列的key:value对并放入{ }中, 相当于: dict = {key1:value1, key2:value2, ...}, 一个空的字典就是俩个大括号{ }. 下面是从一个空字典创建字典以及一些关键点: 数字, 字符串和元组可以作为字典的key, value可以是任何类型(包括字典). ## Can build up a dict by starting with the the

python学习笔记三---segmaphore信号量学习

# *-* coding=gb2312 *-* ''' 信号量semaphore 是一个变量,控制着对公共资源或者临界区的访问.信号量维护着一个计数器,指定可同时访问资源或者进入临界区的线程数. 每次有一个线程获得信号量时,计数器-1.若计数器为0,其他线程就停止访问信号量,直到另一个线程释放信号量. ''' import threading import random import time class MyThread(threading.Thread): availableTables=[

Python 学习笔记三

笔记三:函数 笔记二已取消置顶链接地址:http://www.cnblogs.com/dzzy/p/5289186.html 函数的作用: 給代码段命名,就像变量給数字命名一样 可以接收参数,像argv那样 创建脚本小程序 基础的函数用法: #-*- coding:utf-8 -*- def print_two(*args): arg1,arg2=args print "arg1:%s arg2:%s" %(arg1,arg2) def print_two_again(arg1,arg

Python学习笔记day1【基础介绍】

Alex博客:http://www.cnblogs.com/alex3714/articles/5465198.html 一.本节主要内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc文件 数据类型初识 数据运算 表达式if ...else语句 表达式for 循环 break and continue 表达式while 循环 作业需求 二.具体内容 1.python介绍 python的创始人为吉多·范罗苏姆(Guid

python学习笔记三之上(基础篇)

深浅copy以及赋值 对于字符串和数字而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. import copy n1 = 10242048 #n1 = 'hahahaha' #赋值n2 = n1#浅copy n3 = copy.copy(n1) #深copyn4 = copy.deepcopy(n1)print(id(i),id(i1)) #打印内存地址5787536 5787536print(id(i),id(i2))5787536 5787536print(id(i),id(

python学习笔记三之中(基础篇)

函数 内置函数 常用的内建函数: type()  列出指定对象的类型 help()  能够提供详细的帮助信息 dir()    将对象的所有特性列出 vars()  列出当前模块的所有变量 file,doc,name __file__  列出文件位置 __doc__  文档字符串 __name__ 被执行的脚本,name == __main__ if __name__ == "__main__": print("hello") int() abs() max() m