函数语法
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,写入,用法,二进制,缓冲区,buffering,open From: https://www.cnblogs.com/lld76/p/16614017.html更多内容参考:Python File(文件) 方法
url 文件名
def encode_url(self,url):
return url.replace("/", "$").replace(":", "#")
def decode_filename(self,filename):
return filename.replace('#', ':').replace('$', '_')