标签:文件描述符 ret 方式 seq 代码 文件编码 write .com 教育
处理文件有两种方式,即open(...)和file(...),本质上前者内部调用后者进行文件操作,推荐使用open。
打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对文件操作。
文件句柄 = file(‘文件路径‘, ‘模式‘)
r,只读模式(默认)
w,只写模式[不可读,不存在则创建;存在则删除原内容。]
追加模式。[可读;不存在则创建;存在则只追加内容。]
r+,可读写文件。[可读,可写,可追加]
w+,写读
a+,同a
例如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需要注。
l rb
l wb
l ab
描 述:就是处理文件后关闭此文件
返回 值:没有任何返回值
描 述:文件描述符,可用于底层操作系统的I/O操作。
返回 值:整型的文件描述符(数字,int)
实 例:
#!/usr/bin/env python # 打开文件 fo = open("12.txt", "ab") print ("文件名为: ", fo.name) fid = fo.fileno() print ("文件描述符为: ", fid) # 关闭文件 fo.close() 结 果: 文件名为: 12.txt 文件描述符为: 3
描 述:处理完文件,将处理的内容刷新到磁盘。
返回 值:没有任何结果
描 述:检测文件是否连接到一个终端设备。
返回 值:True或False
实 例:
#!/usr/bin/env python # 打开文件 fo = open("1.txt", "wb") print ("文件名为: ", fo.name) ret = fo.isatty() print ("返回值 : ", ret) # 关闭文件 fo.close() 结 果: 文件名为: 1.txt 返回值 : False
描 述:获取下一行数据,如果不存在就直接报错,这样不可控,一般不会用。
返回 值:没有任何结果。
描 述:方法用于文件读取指定的字节数,如果未给定或为负则读取所有
参 数:size=从文件中读取的字节
实 例:
文件: 1:www.python888.com 2:www.python888.com 3:www.python888.com 4:www.python888.com 5:www.python888.com code: #!/usr/bin/env python # 打开文件 fo = open("12.txt","r+") print ("文件名为: ",fo.name) line = fo.read(20) print ("读取的字符串: %s" % (line)) # 关闭文件 fo.close() 结果: 文件名为: 12.txt 读取的字符串: 1:www.python888.com
描 述:仅读取一行数据
参 数:size=这是从文件中读取的字节数
实 例:
#只读取一行内容 fo = open("12.txt", "r") print ("Name of the file: ", fo.name) line = fo.readline() print ("Read Line: %s" % (line)) line = fo.readline() print ("Read Line: %s" % (line)) # Close opend file fo.close() 结 果: Name of the file: 12.txt Read Line: 1:www.python888.com Read Line: 2:www.python888.com
描 述:读取所有数据,并根据换行保存值列表
参 数:sizehint=从文件中读取字节数
实 例:
# 打开文件readlines() fo = open("12.txt", "r+") print ("文件名为: ", fo.name) line = fo.readlines() print ("读取的数据为: %s" % (line)) line = fo.readlines() print ("读取的数据为: %s" % (line)) # 关闭文件 fo.close() 结 果: 文件名为: 12.txt 读取的数据为: [‘1:www.python888.com\n‘, ‘2:www.python888.com\n‘, ‘3:www.python888.com\n‘, ‘4:www.python888.com\n‘, ‘5:www.python888.com‘] 读取的数据为: [] 备 注: 如果前边有打印所有数据出来,后面打印任何字节数都没有信息,字节数只能单独使用,如果字节数超过一行的字节说,那么打印整行的第二行。
描 述:用于移动文件读取指针到指定位置。
参 数:
offset=开始的偏移量,也就是表示需要移动偏移量的字节数
实 例:
#seek指定中指定位置 # 打开文件 fo = open("12.txt", "r+") print ("文件名为: ", fo.name) line = fo.readline() print ("读取的数据为: %s" % (line)) # 重新设置文件读取指针到开头 fo.seek(2,0) line = fo.readline() print ("读取的数据为: %s" % (line)) # 关闭文件 fo.close() 结 果: 文件名为: 12.txt 读取的数据为: 1:www.python888.com 读取的数据为: www.python888.com
描 述:获取读取后指针的位置
实 例:
#获取当前指针的位置 # 打开文件 fo = open("12.txt", "r+") print ("文件名为: ", fo.name) line = fo.readline() print ("读取的数据为: %s" % (line)) # 获取当前文件位置 pos = fo.tell() print ("当前位置: %d" % (pos)) # 关闭文件 fo.close() 结 果: 文件名为: 12.txt 读取的数据为: 1:www.python888.com 当前位置: 20
描 述:截断数据,仅保留指定之前数据
参 数:size=可选,如果存在则文件截断为size字节
描 述:写内容
参 数:str=要写入文件的字符串
实 例:
#writ写内容 # 打开文件 fo = open("12.txt", "r+") print ("文件名为: ", fo.name) str = "老男孩教育" fo.write(‘a123d‘) print(fo.readlines()) # 关闭文件 fo.close() 结 果: 文件名为: 12.txt 文件名为: 12.txt [‘1:www.python888.com\n‘, ‘2:www.python888.com\n‘, ‘3:www.python888.com\n‘, ‘4:www.python888.com\n‘, ‘5:www.python888.comadasdadasd\n‘, ‘adasd\n‘, ‘adasd\n‘, ‘adasdadasda123d‘]
描 述:方法用于向文件中写入一序列的字符串。这一序列字符串可以是由迭代对象产生的,如一个字符串列表。换行需要制定换行符 \n。
实 例:
#写入序列到文件 # 打开文件 fo = open("test.txt", "r+") print ("文件名为: ", fo.name) seq = ["chenxin 1", "chenxin 2"] fo.writelines( seq ) print(fo.readlines()) # 关闭文件 fo.close() 结 果: 文件名为: test.txt [‘chenxin 1\n‘, ‘chenxin 2chenxin 1\n‘, ‘chenxin 2‘]
描 述:读取使用ReadLine()并返回包含行的列表直到EOF。如果可选sizehint参数不是读取到达EOF,全行共计约sizehint字节(可能四舍五入到内部缓冲区的大小后)被读取。
返回 值:这个方法返回一个包含行的列表。
实 例:
# Open a file fo = open("12.txt", "r+") print ("Name of the file: ", fo.name) #line = fo.readlines() #print ("Read Line: %s" % (line)) line = fo.readlines(21) print ("Read Line: %s" % (line)) # Close opend file fo.close() 结 果: Name of the file: 12.txt Read Line: [‘1:www.python888.com\n‘, ‘2:www.python888.com\n‘]
为了避免打开文件后忘记关闭,可以通过管理上下文,即
with
open(‘log‘,‘r‘) as f:
.....
如此方式,在with代码块执行完毕时,内部会自动关闭并释放文件资源。
在Python2.7后,with又支持同时对多个文件的上下文进行管理,即:
with
open(‘log1‘) as obj1,
open(‘log2‘)
as obj2:
pass
1.在python2默认编码是ASCII, python3里默认是utf-8
2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-8就是unicode
3.在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string
utf-8转成gbk s_to_unicode = s.decode(‘utf-8‘) #utf-8转换成unicode s_to_gbk = s_to_unicode.encode("gbk") #unicode转成为gbk gbk_to_utf8 = s_to_gbk.decode(‘gbk‘).encode(‘utf-8‘) #gbk转成utf-8 #utf8是unicode的扩展集,因此utf-8可以直接打印unicode, 在字符串前加u就可以成为unicode,例如:u‘陈鑫‘
#默认就是unicode,python程序本身就是unicode,注意不管文件编码是什么,在python中都是unicode #gbk向下兼容gb2312 #想让文件处理gbk编码是,必须声明为gbk。 #打印会打印出base类型,再decode一下就会变成字符串了。 s = ‘陈鑫‘ #默认为unicode s_to_gbk = s.encode(‘gbk‘) #转换gbk print(‘s_to_gbk‘,s_to_gbk) print(‘utf8‘,s.encode()) gbk_to_utf8 = s_to_gbk.decode(‘gbk‘).encode(‘utf-8‘) #gbk转换为utf-8 print(‘gbk_to_utf8‘,gbk_to_utf8)
import sys print(sys.getdefaultencoding())
标签:文件描述符 ret 方式 seq 代码 文件编码 write .com 教育
原文地址:http://www.cnblogs.com/cxcx/p/python.html