t 文本模式 (默认)。
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。
+ 打开一个文件进行更新(可读可写)。
r 只读。开头。这是默认模式。
rb 二进制只读。开头。
r+ 读写。文件指针将会放在文件的开头。
rb+ 二进制读写。开头。
w 写入。开头开始编辑,覆盖。不存在就创建。
wb 二进制写入。从开头开始编辑,覆盖
w+ 读写。从开头开始编辑,会覆盖。不存在就创建新文件。
wb+ 二进制于读写。开头开始编辑,会覆盖。不存在就建新。
a 追加。指针在结尾。不存在就会创建
ab 二进制追加。从结尾编辑。不存在就创建
a+ 读写。从结尾编辑。不存在会创建
ab+ 二进制追加。从结尾编辑。不存在就创建
file.close() 关闭文件。关闭后文件不能再进行读写操作。
file.flush() 刷新文件内部缓冲,立刻写入文件
file.fileno() 返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。
file.isatty() 如果文件连接到一个终端设备返回 True,否则返回 False。
file.next() 返回文件下一行。
file.read([size]) 从文件读取指定的字节数,如果未给定或为负则读取所有。
file.readline([size]) 读取整行,包括 "\n" 字符。
file.readlines([sizeint])
读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。
file.seek(offset[, whence])
移动文件读取指针到指定位置
file.tell() 返回文件当前位置。
file.truncate([size])
从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 windows 系统下的换行代表2个字符大小。
file.write(str) 将字符串写入文件,返回的是写入的字符长度。
file.writelines(sequence)
向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。
#!/usr/bin/python3
import os
def Replace(file_name, rep_word, new_word): # 定义一个字符串函数Replace [rəˈpleɪs] 替换,属性有变量,方法如下:
with open(file_name) as f: # 用with语句来得保险
content = [] # [kənˈtɛnt] 目录内容
count = 0 # [kaʊnt] 计数;初始化变量值为 0
for eachline in f: # 定义循环变量 each line [itʃ] 每 [laɪn] 一行;online 在线
if rep_word in eachline: # 循环中判断;用户输入是文件中的字符串就
count += eachline.count(rep_word) # 变量 count = count + 原字符串行数
eachline = eachline.replace(rep_word, new_word) # replace [rəˈpleɪs] 替换,原字符串替换为新字符串
content.append(eachline) # content [kənˈtɛnt] 目录文件; append [əˈpɛnd] 追加; 方法是 eachline 替换字符串
decide = input('文件 {0} 中共有{1}个【{2}】\n您确定要把所有的【{3}】替换为【{4}】吗?\n【YES/NO】:'.format\
(file_name, count, rep_word, rep_word, new_word)) # input 输入函数; decide [dəˈsaɪd] 决定;
if decide in ['YES', 'Yes', 'yes']:
with open(file_name, 'w') as f:
f.writelines(content) # writelines() 方法用于向文件中写入一序列的字符串。write lines 写入行
print('Succeed!')
else:
print('Exit!')
if __name__ == '__main__': # 当.py文件被直接运行,则它的代码被运行
# 当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行
while True:
file_name = "11.txt"
if file_name in os.listdir(): # os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表
rep_word = "as"
new_word = '''
替换后字符串,第一行
第二行
''' # 可以替换为多行字符串变量: new_word = ''' 此处可以换行 ''' ; 三个点位注释;
Replace(file_name, rep_word, new_word)
break # 执行成功一次,就退出循环。不成功就
else:
print('Do not find such a file {}'.format(file_name))
#################### python在文件指定位置插入字符串 #######################
在a文件的keyword之后插入字符串str
file = open(‘a’,'r')
content = file.read()
post = content.find(keyword)
if post != -1:
content = content[:post+len(keyword)]+str+content[post+len(keyword):]
file = open(‘a’,'w')
file.write(content)
file.close()
# content[:post]读取的是keyword之前的内容,content[post:]读取的是包括keyword在内的之后的内容。所以要在keyword之后插入str需是用content[:post+len(keyword)]与content[post+len(keyword):]
#################### 替换后的内容保存到新文件 #######################
#!/usr/bin/python3
import os # 导入模块
a="eisc.cn" # 匹配这个字符串变量
b="需要修改为 xxx.xxx.xxx.xxx" # 修改后的字符串
s=0 # 初始化次数变量 s
f1=open('11.txt','r',encoding='utf-8') # 以“r”(只读)模式打开旧文件; encoding [ɪn'koʊdɪŋ] 编码
f2=open('22.txt','w',encoding='utf-8') # 以“w”(写) 覆盖模式打开或创建新文件(写模式下,文件存在则重写文件,文件不存在则创建文件)
# 参考 : python文件操作及文件增删改查
for i in f1: # 循环变量 i 是 f1 文件
if a in i: # 判断变量字符串 a 是f1 文件中的字符串,就开始
i=i.replace(a,b) # 循环执行替换函数,i 里面的字符替换,将a变量字符串替换为b变量字符串。replace [rəˈpleɪs] 替换
s += 1 # 每修改一次,变量就会本身的值,再加1
f2.write(i) # [raɪt] 写; 将修改后的内容后的内容写入新文件
print("文件修改的次数:",s)
f1.close() # 关闭文件f1 (同时打开多个文件时,先打开的先关闭,后打开的后关闭)
f2.close()
os.replce('22.txt','33.txt') # 调用 os 方法的替换函数,文件重命名
#################### 直接替换当前文件中的字符 #######################
#!/usr/bin/python3
import re
a="eisc.cn"
b="xxx.xxx.xxx.xxx"
f=open('11.txt','r') # 打开文件,方式为可读, r 读 w写 x执行
x=f.readlines() # f.readlines() 文件中包含的所有行。read lines [rid] (ruai d) [laɪn] 读取所有行
f.close() # [kloʊs] 关闭
f=open('11.txt','w+') # 可写
for i in x: # 循环所有行
a=re.sub(a,b,i)
f.writelines(a) # writelines() 方法用于向文件中写入一序列的字符串。
f.close()
########################################## 以占用磁盘空间的方式修改文件 ########################################################
#!/usr/bin/python3
#!-*-coding:utf-8-*-
old_str = '汪淼'
new_str = 'WM'
f1 = open('word1.txt','r+',encoding="utf-8") # 以读写方式打开,可读可写
data = f1.read() # 读取文件内容
print(f1.tell()) # 4574 tell() 方法返回文件的当前位置,即文件指针当前位置。
f1.seek(0) # seek() 方法用于移动文件读取指针到指定位置。
for i in data: # 循环读取
if old_str in data:
data=data.replace(old_str,new_str) # 用新字符串替换旧字符串
print(data) # 打印修改后的内容
f1.write(data) # 向文件中写入内容(data),默认是utf-8
f1.truncate() # 用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。 如果没有指定 size,则从当前位置起截断;截断之后 size 后面的所有字符被删除。
f1.close() # 关闭文件
################################################# 以占用内存的方式修改文件 ###############################################
Powered by ddoss.cn 12.0
©2015 - 2025 ddoss
渝公网安备50011302222260号
渝ICP备2024035333号
【实验平台安全承诺书】
小绿叶技术社区,优化网络中,点击查看配置信息
主机监控系统: 安全防火墙已开启检查cc攻击-下载文件完成后等待10s 恢复访问,检查连接数低于峰值恢复访问
您的IP:216.73.216.110,2025-12-01 16:06:41,Processed in 0.01623 second(s).