Python 读写文件

·  阅读 122

读文件

用Python内置的open()函数打开一个文件

#文件路径 
open(‘./test.txt’, 'r')
复制代码
  1. file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。
  2. access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
模式描述
t文本模式 (默认)。
x写模式,新建一个文件,如果该文件已存在则会报错。
b二进制模式。
'+'(不需要单引号)打开一个文件进行更新(可读可写)。
U通用换行模式(不推荐)。
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
# 读文件
```python
try:
    load_f = open(‘./test.txt’, 'r')
    data = load_f.read()
    print(data )
finally:
    load_f ,close()
复制代码
每次读写文件都要close太繁琐,所以python引入了with
```python
with open(‘./test.txt’, 'r') as load_f :
print( load_f.read())
复制代码
python文件对象提供了三个“读”方法: read()、readline() 和 readlines()。每种方法可以接受一个变量以限制每次读取的数据量。
  • read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。如果文件大于可用内存,为了保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。
  • readlines() 之间的差异是后者一次读取整个文件,像 read() 一样。readlines() 自动将文件内容分析成一个行的列表,该列表可以由 Python 的 for ... in ... 结构进行处理。
  • readline() 每次只读取一行,通常比readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 readline()。
示例代码
    with open(‘./test.txt’, 'r') as load_f :
		  data = load_f.readlines()
		  for i in range(0, len(data)):
		      data[i] = data[i].rstrip('\n')
		      print(data[i])
复制代码

写文件

with open(‘./test.txt’, 'w') as load_f :
load_f.write('hello python')
复制代码
python文件对象提供了两个写方法:write() 和 writelines()。
  • write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。write()方法不会在字符串的结尾添加换行符('\n'):
  • writelines()方法和readlines()方法对应,也是针对列表的操作。它接收一个字符串列表作为参数,将他们写入到文件中,换行符不会自动的加入,因此,需要显式的加入换行符。

文件定位

with  open("./test.txt", "r+") as load_f:
    str = load_f.read(10)
    print("读取的字符串是 : ", str)
    # 查找当前位置
    position = load_f.tell()
    print("当前文件位置 : ", position)

    # 把指针再次重新定位到文件开头
    position = load_f.seek(0, 0)
    str = load_f.read(10)
    print("重新读取字符串 : ", str)
    # 关闭打开的文件
    load_f.close()
复制代码

tell()方法告诉你文件内的当前位置, 换句话说,下一次的读写会发生在文件开头这么多字节之后。

seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。

如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。

重命名和删除文件

import os
os.rename( "./test.txt", "./test2.txt" )
os.remove("./test.txt")
复制代码

rename() 方法 rename() 方法需要两个参数,当前的文件名和新文件名。

remove()方法 你可以用remove()方法删除文件,需要提供要删除的文件名作为参数。

最后

后续会持续 Python系列。

分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改