Python基础编程(文件读写)

文件读写

open() 方法

  Python中使用open()函数打开文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,提示错误。使用 open() 方法后,一定要保证关闭文件对象,即调用 close() 方法。
  open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。

open(file, mode='r')				#打开文件file(file可以包含文件路径,默认当前py文件路径下),用读(read)方式打开

  完整的opne()语法:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
file: 必需,文件路径与文件名
mode: 是一个可选字符串,用于指定打开文件的模式
buffering: 是一个可选的整数,用于设置缓冲策略
encoding: 是用于解码或编码文件的编码的名称,一般使用utf-8
errors: 是一个可选的字符串参数,用于指定如何处理编码和解码错误
newline: 控制 universal newlines 模式如何生效(它仅适用于文本模式)。
closefd: 传入的file参数类型
opener:可以通过传递可调用的 opener 来使用自定义开启器
  • file
    file 是一个 path-like object,表示将要打开的文件的路径(绝对路径或者当前工作目录的相对路径),也可以是要被封装的整数类型文件描述符。(如果是文件描述符,它会随着返回的 I/O 对象关闭而关闭,除非 closefd 被设为 False 。)
  • mode
    mode 是一个可选字符串,用于指定打开文件的模式。默认值是 ‘r’ ,这意味着它以文本模式打开并读取。Python基础编程(文件读写)_第1张图片
  • buffering
    buffering 是一个可选的整数,用于设置缓冲策略。传递0以切换缓冲关闭(仅允许在二进制模式下),1选择行缓冲(仅在文本模式下可用),并且>1的整数以指示固定大小的块缓冲区的大小(以字节为单位)。如果没有给出 buffering 参数,则默认缓冲策略的工作方式如下:
  1. 二进制文件以固定大小的块进行缓冲;使用启发式方法选择缓冲区的大小,尝试确定底层设备的“块大小”或使用 io.DEFAULT_BUFFER_SIZE。在许多系统上,缓冲区的长度通常为4096或8192字节。
  2. “交互式”文本文件( isatty() 返回 True 的文件)使用行缓冲。其他文本文件使用上述策略用于二进制文件。
  • encoding
    encoding 是用于解码或编码文件的编码的名称。这应该只在文本模式下使用。默认编码是依赖于平台的(不管 locale.getpreferredencoding() 返回何值),但可以使用任何Python支持的 text encoding 。
  • errors
    errors 是一个可选的字符串参数,用于指定如何处理编码和解码错误 - 这不能在二进制模式下使用。可以使用各种标准错误处理程序(列在 Error Handlers ),但是使用 codecs.register_error() 注册的任何错误处理名称也是有效的。标准名称包括:
  1. 如果存在编码错误,‘strict’ 会引发 ValueError 异常。 默认值 None 具有相同的效果。
  2. ‘ignore’ 忽略错误。请注意,忽略编码错误可能会导致数据丢失。
  3. ‘replace’ 会将替换标记(例如 ‘?’ )插入有错误数据的地方。
  4. ‘surrogateescape’ 将表示任何不正确的字节作为Unicode专用区中的代码点,范围从U+DC80到U+DCFF。当在写入数据时使用 surrogateescape 错误处理程序时,这些私有代码点将被转回到相同的字节中。这对于处理未知编码的文件很有用。
  5. 只有在写入文件时才支持 ‘xmlcharrefreplace’。编码不支持的字符将替换为相应的XML字符引用 &#nnn;。
  6. ‘backslashreplace’ 用Python的反向转义序列替换格式错误的数据。
  7. ‘namereplace’ (也只在编写时支持)用 \N{…} 转义序列替换不支持的字符。
  • newlin
    newline 控制 universal newlines 模式如何生效(它仅适用于文本模式)。它可以是 None,’’,’\n’,’\r’ 和 ‘\r\n’。它的工作原理:
  1. 从流中读取输入时,如果 newline 为 None,则启用通用换行模式。输入中的行可以以 ‘\n’,’\r’ 或 ‘\r\n’ 结尾,这些行被翻译成 ‘\n’ 在返回呼叫者之前。如果它是 ‘’,则启用通用换行模式,但行结尾将返回给调用者未翻译。如果它具有任何其他合法值,则输入行仅由给定字符串终止,并且行结尾将返回给未调用的调用者。
  2. 将输出写入流时,如果 newline 为 None,则写入的任何 ‘\n’ 字符都将转换为系统默认行分隔符 os.linesep。如果 newline 是 ‘’ 或 ‘\n’,则不进行翻译。如果 newline 是任何其他合法值,则写入的任何 ‘\n’ 字符将被转换为给定的字符串。
  • closefd
    如果 closefd 是 False 并且给出了文件描述符而不是文件名,那么当文件关闭时,底层文件描述符将保持打开状态。如果给出文件名则 closefd 必须为 True (默认值),否则将引发错误。
  • opener
    可以通过传递可调用的 opener 来使用自定义开启器。然后通过使用参数( file,flags )调用 opener 获得文件对象的基础文件描述符。 opener 必须返回一个打开的文件描述符(使用 os.open as opener 时与传递 None 的效果相同)。

file 对象

  file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:
Python基础编程(文件读写)_第2张图片

基础的文件读写
filename = input('输入需要创建的文件名称:')
f = open(filename,'w')
str = 'Hello!\nhi'
f.write(str)				#文件写入
f.close()
q = open(filename,'r')
read_str1 = q.read()		#直接读取
print(read_str1)
q.close()
p = open(filename,'r')
read_str2 = ''
line = p.readline()
while line :				#逐行读取内容
	read_str2 += line
	line = p.readline()
print(read_str2)
p.close()

运行结果
在这里插入图片描述
py根目录下生产的1.txt文件
Python基础编程(文件读写)_第3张图片

你可能感兴趣的:(Python)