python3--文件读写

读写模式 是否可读 是否可写 文件不存在时
r 报错
r+ 是,覆盖写入 报错
w 是,清空原内容 创建新文件
w+ 是,清空原内容 创建新文件
a 是,末尾追加写入 创建新文件
a+ 是,末尾追加写入 创建新文件

上面是python3读写文件的几种模式:

前提:

1 from sys import argv
2 file_name = argv[1]
3 
4 #在cmd中执行代码,需要输入:
5 >>> python py_open_file.py open_file.txt
6 
7 则 argv接收到python后面的两个参数,argv[0] 是python后的第一个参数:py_open_file.py  ; argv[1]接收的值是:open_file.txt

读:

1 #r只读模式
2 with open(file_name,'r') as f:
3     print(f.read())
4 
5 #r+可读可写
6 with open(file_name,'r+') as f:
7     f.write('r+写入')
8     f.seek(0)    #将光标移动到文件首部
9     print(f.read())

写:

1 #w纯写入,清空原内容
2 with open(file_name,'w') as f:
3     f.write("这是w写入的内容")
4 #w+可读可写    
5 with open(file_name,'w+') as f:
6     f.write("这是w+")
7     f.flush()   #刷新内容,将写入的内容由内存刷新到磁盘中;
8     f.seek(0)  #将光标移动到文件首部
9     print(f.read())  #读取文件全部内容

追加写:

 1 #a追加模式,在文件末尾追加内容,如果文件不存在,则创建
 2 with open(file_name,'a') as f:
 3     f.write("\n这是a追加写入的内容;") 
 4 
 5 #a+可追加写可读模式
 6 with open(file_name,'a+') as f:
 7     f.write("\n这是a+的内容")
 8     #f.flush()
 9     f.seek(0) 
10     print(f.read())

随机写入文件内容示例:

1 import random
2 
3 with open(file_name,'w') as f:  
4     f.truncate()  #清空文件内容
5     for i in range(1,10):  # range生成1到9的序列
6         s_name = 'num_' + str(i)
7         s_age = random.randint(14,19)  #随机生成范围(14--19)的整数
8         ss = s_name + ',' + str(s_age) + '\n'
9         f.write(ss)   #循环写入,模式可以是a,也可以是w

优化后的例子:

 1 import random
 2 
 3 with open(file_name,'w+') as f:
 4     f.truncate()
 5     for i in range(1,10):
 6         s_name = 'num_' + str(i)
 7         s_age = random.randint(14,19)
 8         ss = s_name + ',' + str(s_age) + '\n'
 9         f.write(ss)
10     f.flush()
11     f.seek(0)
12     print(f.read())

文件光标:

1 with open(file_name,'r') as f:
2     f.read()
3     print(f.tell()) #f.tell()  显示当前光标位置
4     f.seek(0)  #移动光标到0的位置
5     f.seek(10) #移动光标到10的位置

在练习的过程中,会出现编码报错问题,各种尝试,如果报错,就尝试修改为如下:

1 with open(file_name,'r',encoding='utf-8') as f:

有时候添加了encoding='utf-8',读取或者写入的时候会中文乱码,则去掉试试。

注:

以前打开文件习惯性:

1 f = open(file_name,'w')
2 f.write("这是写入的内容。")
3 #这种写法需要手动关闭文件后再查看文件,才能看到内容
4 f.close()
5 
6 #而with可以自动关闭文件
7 with open(file_name,'w') as f:
8     f.write("这是写入的内容。")
posted @ 2021-11-23 23:04  蜗牛的世界  阅读(1325)  评论(0编辑  收藏  举报