标签:enc 原来 更新 开始 第一个 打开文件 input als 适合
预想操作python中的文件(打开/创建/追加),必须使用python的内置函数:open()
open函数常用参数有两个: 第一个实参,是文件的所在路径(若文件在python中,则写文件名称即可,若文件在电脑中,则需要填写文件的绝对路径,且\字符需要转义) 第二个实参,决定了打开文件的模式:只读,写入,追加等。常用的包括r,w,a,+,b(后边详细介绍每个字符的含义),如果不传参,默认使用r的方式
文件操作三步骤: 1、打开open() 2、操作read()、write()、seek() 3、关闭close() 语法 file = open(‘filename‘,‘mode‘,encoding=‘utf-8‘) print(file.read()) file.close 实例 file = open(‘C:Users\\User\\Desktop\\hello.txt‘,‘a+‘,encoding=‘utf-8‘) # 追加读写模式,使用a+ file.write(‘hello 123‘)# 追加写内容,使用write()方法 file.seek(0) # 移动指针位置,使用seek()方法 print(file.read()) # 读文件,使用read()方法 file.close # 关闭文件,使用close()方法
b 二进制模式,以二进制格式打开或写入,一般用于打开非文本文件,如图片,可与r,w,a,+共同使用,如:rb,rb+,wb,wb+,ab,ab+
+ 打开一个文件进行更新(可读可写),可与r,w,a共同使用,如:r+,w+,a+
r 读模式,只能读不能写。这是默认模式,打开不存在的文件会报错
r+ 读写模式,文件指针将会放在文件的开头,打开不存在的文件会报错
w 写模式,只能写不能读。如果该文件已存在,会把原有文件中的数据覆盖,打开不存在的文件会创建。
w+ 读写模式,如果该文件已存在,会把原有文件中的数据覆盖,打开不存在的文件会创建。
a 追加模式,打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 追加读写模式,打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
模式 | r | r+ | w | w+ | a | a+ |
---|---|---|---|---|---|---|
读 | √ | √ | √ | √ | ||
写 | √ | √ | √ | √ | √ | |
创建 | √ | √ | √ | √ | ||
覆盖 | √ | √ | ||||
指针在开始 | √ | √ | √ | √ | ||
指针在结尾 | √ | √ |
file = open(‘C:Users\\User\\Desktop\\hello.txt‘,‘r‘,encoding=‘utf-8‘) print(file.read()) # 读取文件中的所有内容 file.seek(0) print(file.readline()) # 按行读取文件中的内容,读取时占用内存小,比较适合大文件 file.seek(0) print(file.readlines()) # 读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素,但读取大文件会比较占内存 print(file.readable()) # 如果文件是可读的,返回 True,否则返回 False file.close
file = open(‘C:Users\\User\\Desktop\\hello.txt‘,‘a+‘,encoding=‘utf-8‘) file.write(‘123\n‘) # write()的参数是一个字符串 file.writelines([‘456\n‘,‘456\n‘]) # writelines()的参数可以是一个字符串,也可以是一个列表 file.seek(0) print(file.read()) print(file.writable()) # 如果文件是可写的,返回True,否则返回Flase
# 循环取值
file = open(‘test.txt‘,encoding=‘utf-8‘) # 打开文件,默认是使用r读模式 for line in file: print(line)
# 循环写入 l = [‘haha‘,‘heihei‘,‘hehe‘,‘lala‘] for i in l: f = open(‘input.txt‘, ‘w+‘, encoding=‘utf-8‘) f.write(i) f.seek(0) print(f.read()) f.close()
# 循环写入 l = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘] f = open(‘wxy.txt‘, ‘w‘, encoding=‘utf-8‘) # 打开一个文件向里边写入 for i in l: # 循环list f.write(i + ‘\n‘) # 每循环一次,写入一个值,如果想换行,就在后面加\n f.writelines(l) # 传一个list的话,它会帮你循环,把list中的每个元素都写到文件里面,该方法和上边循环的效果一样 f.close() f1 = open(‘wxy.txt‘, ‘r‘, encoding=‘utf-8‘) print(f1.read()) # 读取这个文件中的值 f1.close()
练习:把test文件中的xiaolan改成dalan test文件中内容: xiaohei xiaobai xiaolan xiaohong
# 写法1, # 思路:1、读取内容 2、替换 3、清除原来文件的内容 4、把新的内容写进去 file = open(‘test‘,‘a+‘,encoding=‘utf-8‘) file.seek(0) # 移动指针位置 result = file.read() #将读取的文件,赋值给result content = result.replace(‘xiaolan‘,‘dalan‘) # 将result中替换后的信息,赋值给content file.truncate(0) # 清空原有文件 file.write(content) # 将替换后的内容写入到file中 file.seek(0) print(file.read()) # 读取文件 file.close()
# 写法2,大文件用这种方式处理 # 思路:1、逐行处理 2、打开a(要修改的文件)文件,在打开b(空文件)文件 # 3、从a文件中读一行,修改,修改之后写到b文件中 4、删除a文件,把b文件的名字改成a文件 f = open(‘test.txt‘,encoding=‘utf-8‘) # 打开文件,默认是使用r读模式 f2 = open(‘test1.txt‘,‘a+‘,encoding=‘utf-8‘) # w模式,打开不存在的文件会创建 for line in f: result = line.replace(‘xiaolan‘,‘dalan‘)# 替换文件内容 # result = line.upper() # 把文件内容转换为大写字母 f2.write(result) f2.seek(0) print(f2.read()) f.close() f2.close() import os os.remove(‘test.txt‘) # 将test.txt文件删除 os.rename(‘test1.txt‘,‘test.txt‘) # 将test1.txt重命名为test.txt
标签:enc 原来 更新 开始 第一个 打开文件 input als 适合
原文地址:https://www.cnblogs.com/wxinyu/p/14832467.html