首页 > 编程语言 >python open 用法

python open 用法

时间:2023-04-26 10:59:03浏览次数:50  
标签:文件 打开 python 写入 用法 二进制 缓冲区 buffering open

函数语法

open(file, mode, buffering, encoding, errors, newline, closefd, opener) 

参数说明:

  • name : 一个包含了你要访问的文件名称的字符串值。

  • mode : mode 决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。

  • buffering : 如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

  • buffering:缓冲设置,值可以是任意一个正整数、负整数或0,默认为-1。为负整数时,缓冲区的大小设置使用系统默认缓冲机制,具体会遵从以下两点策略。一,当mode参数为二进制模式时,采用固定块内存缓冲区方式,内存块的大小根据系统设备分配的磁盘块来决定,如果获取系统磁盘块的大小失败,就使用内部常量io.DEFAULT_BUFFER_SIZE定义的大小。一般的操作系统上,块的大小是4096或者8192字节。二,对于交互的文本文件(isatty()判断为True),采用行缓冲区的方式。其它文本文件使用跟二进制一样的方式。注意,buffering设置为任意负整数,效果都是相同的。buffering若为0,则不使用缓冲区,即缓冲区大小为0,写入和读取都是直接与磁盘对接。buffering若为1,则表示缓冲区采用行缓冲区,即只能放一行数据,遇到换行符即清空缓存,将数据写入磁盘。buffering为大于1的正整数时,这个正整数即代表缓冲区的大小,单位为字节。例如buffering=100,表示缓冲区大小为100Byte。达到100Byte即将数据写入磁盘。

    encoding:打开文件所用的编码,可选,str类型,默认为None。encoding参数仅可在采用文本方式(即mode值带t)读写数据的情况下有效,二进制方式下不可指定。文本编码有很多,常用的有utf-8、ascii、gbk等。mode参数采用文本方式的情况下,若encoding指定为None,则编码为locale.getpreferredencoding(False)这行代码的返回值。在Windows下,这行代码一般返回值为cp936,。cp936指的就是gbk。

    errors:编解码报错的处理模式,可选,str类型,默认为None。用于设置当open函数发生编码或解码错误时的处理方式。注意,仅当mode参数采用文本方式时有效,二进制方式下不可指定。常用的可选值有strict、ignore、replace、surrogateescape、xmlcharrefreplace、backslashreplace、namereplace等。下面分别解释下每个值的含义。

    strict:编解码错误则报错,ValueError。

    ignore:编解码出现错误会忽略,不报错。

    replace:编解码出现错误不会报错,会用?替代要写入或读取的无法解析的数据。Python官网的说明中对替代字符的描述是such as?。所以说对无法编解码数据目前只知道会用?替代,至于是否会用其他符号代替,我不清楚。

    newline:换行符设置,可选,str类型,默认为None。可选值包括None、"\r"、"\n"、"\r\n"。不同计算机操作系统所规定的换行符表示方法是不一样的,Windows采用"\r\n",MacOS采用"\r",Unix和Linux采用"\n"。newline参数就是为了规定读取文本内容时,什么才算换行符。

    closefd:控制file参数的传入值类型。bool类型,默认为True。当为True时,file参数可以是表示文件路径的字符串,也可以是文件描述符。当为False时,file参数只能是文件描述符,传入字符串会报错。

    opener:具体含义暂不清楚。

    原文链接:https://blog.csdn.net/weixin_44449116/article/details/122799242

不同模式打开文件的完全列表:

模式描述
t 文本模式 (默认)。
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。
+ 打开一个文件进行更新(可读可写)。
U 通用换行模式(不推荐)。
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

file 对象方法

  • file.read([size]):size 未指定则返回整个文件,如果文件大小 >2 倍内存则有问题,f.read()读到文件尾时返回""(空字串)。

  • file.readline():返回一行。

  • file.readlines([size]) :返回包含size行的列表, size 未指定则返回全部行。

  • for line in f: print line :通过迭代器访问。

  • f.write("hello\n"):如果要写入字符串以外的数据,先将他转换为字符串。

  • f.tell():返回一个整数,表示当前文件指针的位置(就是到文件头的字节数)。

  • f.seek(偏移量,[起始位置]):用来移动文件指针。

    • 偏移量: 单位为字节,可正可负
    • 起始位置: 0 - 文件头, 默认值; 1 - 当前位置; 2 - 文件尾
  • f.close() 关闭文件

re.sub("['S:', '.', '<', '>', '/', '\\', '|', ':', '*', '?']", '', url)

更多内容参考:Python File(文件) 方法

url 文件名

def encode_url(self,url):
return url.replace("/", "$").replace(":", "#")

def decode_filename(self,filename):
return filename.replace('#', ':').replace('$', '_')

标签:文件,打开,python,写入,用法,二进制,缓冲区,buffering,open
From: https://www.cnblogs.com/lld76/p/16614017.html

相关文章

  • python 快速替换csv数据集字符串列表中的表情符号为空,asyncio,re,pandas
     传统的字符串列表替换字符串使用遍历非常慢比如下面这段代码,如果处理几十万或上百万的数据集时,会非常的慢,几小时几天都可能importrep=re.compile(u'['u'\U0001F300-\U0001F64F'u'\U0001F680-\U0001F6FF'u'\u2600-\u2B55\U00010000-\U0010ffff]+')#text="超详细修......
  • python安装pillow报错
    Fatalerrorinlauncher:Unabletocreateprocessusing'"D:\ProgramFiles\Python311\python.exe" "D:\ProgramFiles\Python311\Scripts\pip.exe"installpillow':??????????? 解决:cmd窗口执行32位:python3-mpipinstall--up......
  • 对count distinct的用法
    平均活跃天数和月活人数_牛客题霸_牛客网(nowcoder.com)在牛客做这道题时看到了这样的写法。count(distinctuid,date_format(submit_time,"%Y%m%d") 不禁疑惑count里面可以跟两个参数吗。其实不是的,还是只有一个参数。这里面的distinct先起作用.例如:select d......
  • Python爬虫基础之三
    Python爬虫基础包括HTTP协议、HTML、CSS和JavaScript语言基础、requests库的使用、BeautifulSoup库的使用、xpath和正则表达式的使用等。此外,还应该了解反爬虫机制和爬虫的一些常见问题及解决方法。上一篇文章讲解了有关条件判断语句、循环语句、元组、字典等相关知识,本节将围绕......
  • openEuler NFS+协议全新发布:实现NAS存储性能与可靠性倍增
       4月21日,在openEulerDeveloperDay2023上,openEuler发布NFS+协议,实现单客户端访问NAS存储可靠性提升3倍、性能提升6倍,助力NAS存储全面满足新型生产核心场景下苛刻要求。传统NFS面临挑战网络文件系统(NFS)是一种分布式文件系统协议,最初由Sun公司于1984年开发,它允许客户端上的......
  • python 画思维导图
    1.安装Graphviz要安装Graphviz,可以按照以下步骤操作:前往Graphviz官网前往Graphviz官网(https://graphviz.org/)。https://graphviz.org/download/下载适合你操作系统的安装文件在官网首页中,你可以看到Windows、macOS和Linux三个操作系统的图标。选择适合你操作系统......
  • python 装饰器
    装饰器(Decorators)是Python的一个重要部分。简单地说:他们是修改其他函数的功能的函数。他们有助于让我们的代码更简短,也更Pythonic(Python范儿)。大多数初学者不知道在哪儿使用它们,所以我将要分享下,哪些区域里装饰器可以让你的代码更简洁。......
  • python多继承
    顺序,初始化从右往左classHuman(object):...classFather(Human):def__init__(self):super().__init__()self.test1="父亲"classMother(Human):def__init__(self):super().__init__()self.test1="母亲&quo......
  • Python | raise的使用
    当程序出现错误,Python会自动引发异常,Python允许我们在程序中手动设置异常,使用raise语句即可。一旦执行了raise语句,raise后面的语句将不能执行。我们从来都是想方设法地让程序正常运行,为什么还要手动设置异常呢?首先要分清楚程序发生异常和程序执行错误,它们完全是两码事,程序由于......
  • Python爬虫基础之二
    Python爬虫基础包括HTTP协议、HTML、CSS和JavaScript语言基础、requests库的使用、BeautifulSoup库的使用、xpath和正则表达式的使用等。此外,还应该了解反爬虫机制和爬虫的一些常见问题及解决方法。上一篇文章讲解了有关条件判断语句、循环语句等相关知识,本节将围绕元组、字典、......