首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Python语法学习记录(7):文件读写、坐标寻址、查找替换

  • 25-03-03 18:02
  • 2358
  • 9323
blog.csdn.net

PYTHON 文件读写、坐标寻址、查找替换

文章目录

  • PYTHON 文件读写、坐标寻址、查找替换
    • 读文件
      • 打开文件(文件需要存在)
      • 完全读取文件
      • 按按行读取整个文件方法一(删除回车)
      • 按行读取整个文件方法一(不删除回车)
      • 按行读取整个文件第二种方法
      • 按行读取整个文件第三种方法
      • 将文件读入numpy数组中
    • 写文件
      • 列表写入文件
      • 非替换写入
    • 文件坐标插入读取
    • 内容查找
    • 替换

读文件

打开文件(文件需要存在)

#打开文件
f = open("data.txt","r")   #设置文件对象
print(f)#文件句柄
f.close() #关闭文件
#为了方便,避免忘记close掉这个文件对象,可以用下面这种方式替代
with open('data.txt',"r") as f:    #设置文件对象
    str = f.read()    #可以是随便对文件的操作
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

完全读取文件

#完全读取文件
f = open("data.txt","r")   #设置文件对象
string1 = f.read()     #将txt文件的所有内容读入到字符串string1中
f.close()   #将文件关闭
print(string1)
  • 1
  • 2
  • 3
  • 4
  • 5

按按行读取整个文件方法一(删除回车)

#按行读取整个文件方法一(删除回车)
data = []
f = open("data.txt","r")   #设置文件对象
line = f.readline()
if line !='\n' and line[len(line) -1 if len(line)-1>0 else 0] == "\n":#去掉换行符,也可以不去
    line_ = line[:-1]
data.append(line_)
while line:             #直到读取完文件
    line = f.readline()  #读取一行文件,包括换行符
    if line !='' and  line[len(line) -1 if len(line)-1>0 else 0] == "\n":#去掉换行符,也可以不去
        line_ = line[:-1]
        data.append(line_)
f.close() #关闭文件
print(data)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

按行读取整个文件方法一(不删除回车)

#按行读取整个文件方法一(不删除回车)
data = []
f = open("data.txt","r")   #设置文件对象
line = f.readline()
data.append(line)
while line:             #直到读取完文件
    line = f.readline()  #读取一行文件,包括换行符
    if line !='':
        data.append(line)
f.close() #关闭文件
print(data)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

按行读取整个文件第二种方法

#按行读取整个文件第二种方法
data = []
for line in open("data.txt","r"): #设置文件对象并读取每一行文件
    data.append(line)               #将每一行文件加入到list中
print(data )
  • 1
  • 2
  • 3
  • 4
  • 5

按行读取整个文件第三种方法

f = open("data.txt","r")   #设置文件对象
data = f.readlines()  #直接将文件中按行读到list里,效果与方法2一样
f.close()             #关闭文件
print(data)
  • 1
  • 2
  • 3
  • 4

将文件读入numpy数组中

#将文件读入数组中
import numpy as np
data = np.loadtxt("data.txt")   #将文件中数据加载到data数组里
print(data)
  • 1
  • 2
  • 3
  • 4

写文件

列表写入文件

#列表写入文件(直接)
data = ['a','b','c']
#单层列表写入文件
with open("data.txt","w") as f:
    f.writelines(data)
  • 1
  • 2
  • 3
  • 4
  • 5

#列表写入文件(加入一些东西)    
data = ['a','b','c']
#单层列表写入文件
with open("data.txt","w") as f:
    for i in data:
        f.write(i+'\r\n')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

 #二维列表写入文件       
data =[ ['a','b','c'],['a','b','c'],['a','b','c']]
with open("data.txt","w") as f:                                                   #设置文件对象
    for i in data:
        i = str(i).strip('[').strip(']').replace(',','').replace('\'','').replace(' ',',')+'\r\n'  #将其中每一个列表规范化成字符串
        print(i)
        f.write(i)     
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

#第二种方法,直接将每一项都写入文件
data =[ ['a','b','c'],['a','b','c'],['a','b','c']]
with open("data.txt","w") as f:                                                   #设置文件对象
   for i in data:                                                                 #对于双层列表中的数据
       f.writelines(i)  
        
        
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

#将数组写入文件
import numpy as np
data =[ [1,2,3],[4,5,6],[7,8,9]]
# 第一种方法将数组中数据写入到data.txt文件
np.savetxt("data1.txt",data)  
# 第二种方法将数组中数据写入到data.npy文件
np.save("data",data)      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

import numpy as np
filename = 'data.txt' # txt文件和当前脚本在同一目录下,所以不用写具体路径
dataele_list = []
with open(filename, 'r') as f:
    while True:
        lines = f.readline() # 整行读取数据
        if not lines:
            break
        dataele_tmp = [float(i) for i in lines.split()] # 将整行数据分割处理,如果分割符是空格,括号里就不用传入参数,如果是逗号, 则传入‘,'字符。
        dataele_list.append(dataele_tmp)  # 添加新读取的数据
dataele_np = np.array(dataele_list) # 将数据从list类型转换为array类型。
print(dataele_np)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

非替换写入

#非替换写入
#r+ 模式的指针默认是在文件的开头
# 如果直接写入,则会覆盖源文件,通过read() 读取文件后,指针会移到文件的末尾,再写入数据就不会有问题了。
# 这里也可以使用a 模式
f2 = open('data.txt','r+')
f2.read()
f2.write('\r\nhello boy!')
f2.close()
#非替换写入
f2 = open('data.txt','a')
f2.write('\r\nhello fff!')
f2.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

文件坐标插入读取

# 在开始使用open打开文件时候,将打开方式从r,换成rb即可  才可以使用seek移动
f = open('data.txt','rb')   
#f.tell()   #获取指针位置

print("初始位置",f.tell())
# 开头位置偏离3位置
f.seek(3,0)
print("开头位置偏离3位置",f.tell())
print("==",f.readline(),"==")
print("读取一行后位置",f.tell())
# 当前位置偏离5位置
f.seek(5,1)
print("当前位置偏离5位置",f.tell())
print("==",f.readline(),"==")
print("读取一行后位置",f.tell())
# 结尾偏离5位置
f = open('data.txt','rb')
f.seek(0,2)
print("结尾偏离0位置",f.tell())
print("==",f.readline(),"==")
print("读取一行后位置",f.tell())
f.seek(3,2)
print("结尾偏离3位置",f.tell())
print("==",f.readline(),"==")
print("读取一行后位置",f.tell())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

内容查找

# 内容查找
import re
f = open('data.txt')
source = f.read()
f.close()
r = 'www'
s = len(re.findall(r,source))
print(s)


import re
f = open("data.txt",'r')
count = 0
for s in f.readlines():
    li = re.findall("www",s)
    if len(li)>0:
        count = count + len(li)
print ("Search",count, "www")
f.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

替换

#替换
f1 = open('data.txt','r')
f2 = open('data2.txt','w')
for s in f1.readlines():
    f2.write(s.replace('www','w')+'\r\n')
f1.close()
f2.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

#排序 去除空行 注释
f = open('data.txt')
result = list()
for line in f.readlines():                # 逐行读取数据
    line = line.strip()                #去掉每行头尾空白
    if not len(line) or line.startswith('#'):   # 判断是否是空行或注释行
        continue                  #是的话,跳过不处理
    result.append(line)              #保存
f.close()
result.sort()                       #排序结果
print(result)
f = open('data2.txt','w')
for line in result:
    f.write(line+'\r\n')

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树基本技能数据文件读写416623 人正在系统学习中
注:本文转载自blog.csdn.net的呆呆象呆呆的文章"https://blog.csdn.net/qq_41554005/article/details/92442674"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top