Python3文件操作之系统代码(python3怎么运行代码)

网友投稿 268 2022-08-23


Python3文件操作之系统代码(python3怎么运行代码)

#!/usr/bin/env python3import osimport sys# Python3 File(文件) 方法# open()方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。# 注意: 使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。# open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。# open(file, mode='r')# 完整的语法格式为:# open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)# 参数说明:# file: 必需,文件路径(相对或者绝对路径)。# mode: 可选,文件打开模式# buffering: 设置缓冲# encoding: 一般使用utf8# errors: 报错级别# newline: 区分换行符# closefd: 传入的file参数类型# opener: 设置自定义开启器,开启器的返回值必须是一个打开的文件描述符。# 模式 描述# t 文本模式 (默认)。# x 写模式,新建一个文件,如果该文件已存在则会报错。# b 二进制模式。# + 打开一个文件进行更新(可读可写)。# U 通用换行模式(Python 3 不支持)。# r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。# rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。# r+ 打开一个文件用于读写。文件指针将会放在文件的开头。# rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。# w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。# wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。# w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。# wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。# a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。# ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。# a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。# ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。# 默认为文本模式,如果要以二进制模式打开,加上 b 。# file 对象# file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:# 序号 方法及描述# file.close()# 关闭文件。关闭后文件不能再进行读写操作。# file.flush()# 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。# file.fileno()# 返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。# file.isatty()# 如果文件连接到一个终端设备返回 True,否则返回 False。# file.next()# Python 3 中的 File 对象不支持 next() 方法。# 返回文件下一行。# file.read([size])# 从文件读取指定的字节数,如果未给定或为负则读取所有。# file.readline([size])# 读取整行,包括 "\n" 字符。# file.readlines([sizeint])# 读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。# file.seek(offset[, whence])# 移动文件读取指针到指定位置# file.tell()# 返回文件当前位置。# file.truncate([size])# 从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 windows 系统下的换行代表2个字符大小。# file.write(str)# 将字符串写入文件,返回的是写入的字符长度。# file.writelines(sequence)# 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。# file.writable()# 文件可写返回True 否则返回False# file.readable()# 文件可读返回True 否则返回False# file.seekable()# 文件可以seek返回True 否则返回False# 打开文件f1 = open("myfile.txt", "w+")f1.writelines("hello world 1\n")f1.writelines("hello world 2\n")f1.writelines("hello world 3\n")f1.writelines("hello world 4\n")f1.writelines("hello world 5\n")# write(str) 返回写入字节数wdlen = f1.write("abcdefghijklmnopqrstuvwxyz")print("write byte:%d" % (wdlen))# 刷新缓存f1.flush()# 关闭文件f1.close()# myfile.txt 文件内容# hello world 1# hello world 2# hello world 3# hello world 4# hello world 5f2 = open("myfile.txt", "r")print("文件描述:", f2.fileno())ret = f2.isatty()print("返回值:", ret)# 逐行读取内容for index in range(5): line = next(f2) print("第%d行 : %s" % (index, line))f2.close()fw = open("1.wav", "rb")print("file name:", fw.name) # file name: 1.wavprint("file isatty:",fw.isatty()) # file isatty: Falsebuffer = fw.read(128)print("read buffer:%s" % (buffer)) # b'RIFF\xd4\x88\x08\x00WA'# seek() 方法用于移动文件读取指针到指定位置。# 语法# seek() 方法语法如下:# fileObject.seek(offset[, whence])# 参数# offset -- 开始的偏移量,也就是代表需要移动偏移的字节数,如果是负数表示从倒数第几位开始。# whence:可选,默认值为 0。给 offset 定义一个参数,表示要从哪个位置开始偏移;# 0 代表从文件开头开始算起,# 1 代表从当前位置开始算起,# 2 代表从文件末尾算起。# 返回值如果操作成功,则返回新的文件位置,如果操作失败,则函数返回 -1。# 开始位置 正向偏移44个字节fw.seek(44, 0)buffer = fw.read(16)print(buffer)print("current pos:%d" % (fw.tell()))# 当前位置 反向偏移8个字节fw.seek(8, 1)buffer = fw.read(16)print(buffer)print("current pos:%d" % (fw.tell()))# 末尾位置 反向偏移128个字节fw.seek(-128, 2)buffer = fw.read(16)print(buffer)print("current pos:%d" % (fw.tell()))# 计算文件sizefw.seek(0, 2)print("file size:%d" % (fw.tell()))# truncate([size])从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;# 截断之后后面的所有字符被删除,其中 windows 系统下的换行代表2个字符大小。# fw.truncate(16)fw.close()fs = open("myfile.txt", "rb") #rb or rt#readline() 方法用于从文件读取整行,包括 "\n" 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 "\n" 字符。rdline = fs.readline()print(type(rdline))#print(rdline) #b'hello world 1\r\n'rdline_num = fs.readline(3) #实参值最大不超过一行的长度print(type(rdline_num)) #print(rdline_num) #b'hel' 读取一行的3个字节# readlines() 读取所有行(直到结束符 EOF)并返回列表, 返回的是列表类型rdlines = fs.readlines()print(type(rdlines))#print(rdlines)#[b'lo world 2\r\n', b'hello world 3\r\n', b'hello world 4\r\n', b'hello world 5\r\n', b'abcdefghijklmnopqrstuvwxyz']# 设置文件偏移到开始位置fs.seek(0, 0)print(fs.readlines())#[b'hello world 1\r\n', b'hello world 2\r\n', b'hello world 3\r\n', b'hello world 4\r\n', b'hello world 5\r\n', b'abcdefghijklmnopqrstuvwxyz']print(fs.writable()) #Falseprint(fs.readable()) #Trueprint(fs.seekable()) #Truefs.close()

作者:小家电维修

转世燕还故榻,为你衔来二月的花。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python中file()和open()的区别(Python file open)
下一篇:Jupyter Notebook又一利器Visual Python,拯救不想写代码!(jupyter notebook无法跳转浏览器)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~