首页 > 其他分享 >文件的基本操作

文件的基本操作

时间:2023-12-05 15:48:17浏览次数:36  
标签:fp 文件 list test print 基本操作 open

文件的基本操作

1. 操作文件打开的两种方式

# 1.文件的操作方式一:
# 讲文件以指定编码格式打开,讲文件句柄赋值给变量fp
fp = open('01.txt', 'w', encoding='utf-8')
# 把hello写入文件
fp.write("hello")
# 关闭文件
fp.close()

2.文件的操作方式二:
# Python解释器内置了一个文件操作器 --- 能自主的回收系统资源 --- with 语句
# 打开with open() as fp 打开文件,赋值fp。自动关闭
with open('01.txt', 'w', encoding='utf-8') as fp:
    fp.write("world")

2. 文件操作的三种方式

# 操作文件的三种方式 w、a、r

# w write 模式:write 覆盖写模式,如果你文件中有内容,直接覆盖原内容写入新的内容
# 如果文件不存在,则创建一个新的文件,然后再像文件中写新的内容进去
with open ('01.txt','w',encoding='utf-8') as fp:
    fp.write("覆盖了原有的world")
    
 
# a(append) 模式 : write 追加写模式,如果你文件中有内容,再原有内容的基础上追加内容
# 如果不存在该文件,则会创建一个新的文件,然后再向文件中写新的内容进去
with open('01.txt', 'w', encoding='utf-8') as fp:
    fp.write("world")
    
  
# r(read) 模式 : read 读内容模式,可以将文件中的内容读出来
with open('01.txt','r',encoding='utf-8') as fp:
    data = fp.read()
    print(data) # 覆盖了原有的world追加了了world后面

3. 控制文本的读写格式

# t 模式 : 文本类型。读内容和写内容都是字符串格式
data = "hello world"
with open('01.txt','wt',encoding='utf-8') as fp:
    fp.write(data)
# 读出来的内容是字符串格式,即使长得像列表,其实也是字符串格式    
   
# b 模式 :二进制模式。读内容和写进去的内容必须都是二进制格式,b模式下不需要指定编码格式
with open('image-20201022211946339.png','rb') as fp:
    data = fp.read()
    print(data)
  

4. 文件拷贝联系

# # 编写文件拷贝工具
# # 输入一个文件地址 --- 把文件内容读出来
# # 输入一个文件地址 --- 把当前文件内容拷贝到新的地址和新的文件里面
path_start = input("请输入原地址:").strip()
path_end = input("请输入新地址:").strip()
with open(path_start, 'rb') as path_r, open(path_end, 'wb') as path_w:
    path_w.write(path_r.read())


# /Users/chenxu/Documents/pythonProjects28/day10/image-20201022211946339.png
# 新地址:/Users/chenxu/Documents/pythonProjects28/day10/img/image-2020102221194633.png

5.文件操作详细方法

  • read,读

    • 读所有

      with open('01.txt','r',encoding='utf-8')as fp:
        data = fp.read()
        print(data) 
      # hello world
      # 我的名字叫serein
      
    • readline,读一行

      with open('01.txt','r',encoding='utf-8')as fp:
        data = fp.readline()
        print(data)
       # hello world
      
    • readlines,读所有行,放到列表里,每行作为列表的一个元素

      with open('01.txt','r',encoding='utf-8')as fp:
        data = fp.readlines()
        print(data)
      #['hello world','我的名字叫serein']
      
      

6.控制文件内光标移动

# 1.控制读的字符个数,读n个字符(字节)读出来的字符个数
with open('01.txt','r',encoding='utf-8')as fp:
  data = fp.read(2)
  print(data) # he
 
# 2.seek方法,移动光标到指定位置(字节)
# seek : 三种模式 :
# 0 : 以文件开头作为参照
# 1 : 以当前我所在位置作为参照
# 2 : 以文件末尾的位置作为参照

# 2.1 0模式:已开头为参照物
with open('01.txt','rt',encoding='utf-8')as fp:
    fp.seek(2,0) # 从开头开始算,往后移动2个字节,开始读数据
    print(fp.read()) # llo world
    
# 2.2 1模式:以当前所在位置做为参照物
with open('01.txt','rb')as fp:
    fp.seek(2,1) 
    data = fp.read()
    print(data.decode('utf-8')) 
    # llo world 
    # 我的名字叫serein
    
# 2.3 2模式:以文件末尾的位置作为参照
with open('01.txt','rb')as fp:
    fp.seek(0,2)
    print(fp.read())

7.文件替练习

# 原来的文本内容如下
# 张一蛋     山东    179    49    12344234523
# 李二蛋     河北    163    57    13913453521
# 王全蛋     山西    153    62    18651433422

# 修改后的内容如下
# 张一蛋(妇女主任)  山东    179    49    12344234523
# 李二蛋(村长)     河北    163    57    13913453521
# 王全蛋(书记)     山西    153    62    18651433422


with open('02.txt', 'r', encoding='utf-8') as fp:
    data = fp.readlines()

line_list = []

for i in data:
    if "张一蛋" in i:
        i = i.replace(i.split()[0], f"{i.split()[0]}(妇女主任)")
    elif "李二蛋" in i:
        i = i.replace(i.split()[0], f"{i.split()[0]}(村长)")
    elif "王全蛋" in i:
        i = i.replace(i.split()[0], f"{i.split()[0]}(书记)")
    line_list.append(i)
print(line_list)

with open('02.txt', 'w', encoding='utf-8') as fp:
    fp.writelines(line_list)


8.列表生成式

# 示例1
num_list = []
for i in range(10):
    num_list.append(i)
print(num_list)

# 列表生成式
num_list = [i for i in range(10)]
print(num_list)


# 示例2
test_1 = [1, 2, 3]
test_2 = [4, 5, 6]
new_list = []
for j in test_1:
    for k in test_2:
        num = j*k
        new_list.append(num)
print(new_list)

# 列表生成式 : 遍历两个列表并取出每一个列表的元素 做乘法运算
list_one = [x * y for x in test_1 for y in test_2]
print(list_one)
# [4,5,6,8,10,12,12,15,18]


num_dict = {}
for key in range(3):
    for value in range(2):
        num_dict[key] = value

print(num_dict)

my_dict = {key: value for key in range(3) for value in range(2)}
print(my_dict)
# {0: 1, 1: 1, 2: 1}

8.1 新生成列表的每个元素都可以是任意的表达式或对象

test = [1, 2, 3]

print([i * i for i in test])
# [1,4,9]

print([[i, i + 2] for i in test])
# [[1,3],[2,4],[3,5]]

8.2 让每个元素执行相同的操作

# 原始列表 : 每个元素都有空格
some_animals = [' dog', 'cat  ', ' sheep ']

# 列表生成式: 新的列表,每个元素都去除掉了空格
some_animals_new = [i.strip() for i in some_animals]
print(some_animals_new)
# ['dog','cat','sheep']

8.3 加入嵌套循环

test_1 = [1, 2, 3]
test_2 = [4, 5, 6]

# 列表生成式 : 遍历两个列表并取出每一个列表的元素 做乘法运算
list_one = [x * y for x in test_1 for y in test_2]
print(list_one)
# [4,5,6,8,10,12,12,15,18]

# 列表生成式 : 遍历两个列表并取出每一个列表的元素 做新列表的生成
list_two = [[x, x + y] for x in test_1 for y in test_2]
print(list_two)
# [[1, 5], [1, 6], [1, 7], [2, 6], [2, 7], [2, 8], [3, 7], [3, 8], [3, 9]]

###  注意通过这两个print体会谁是内层循环,谁是外层循环

# 列表生成式 : 遍历两个列表并取出每一个列表对应索引的元素 做乘法运算
list_three = [test_1[i] * test_2[i] for i in range(len(test_1))]
print(list_three)
# [4, 10, 18]

# 列表生成式 : 遍历两个列表并取出每一个列表对应索引的元素 做乘法运算
list_four = [x * y for x, y in zip(test_1, test_2)]
print(list_four)
# [4, 10, 18]

9.字典生成式

  • 语法格式如下:
{键:值 for 迭代变量 in 可迭代对象 [if 条件表达式]}
  • 案例
my_dict = {key: value for key in range(3) for value in range(2)}
print(my_dict)
# {0: 1, 1: 1, 2: 1}
  • 最常见的哪里还是下述的代码,遍历一个具有键值关系的可迭代对象。
my_tuple_list = [('name', '橡皮擦'), ('age', 18), ('class', 'no1'), ('like', 'python')]
my_dict = {key: value for key, value in my_tuple_list}
print(my_dict)
# {'name': '橡皮擦', 'age': 18, 'class': 'no1', 'like': 'python'}

标签:fp,文件,list,test,print,基本操作,open
From: https://www.cnblogs.com/Formerly/p/17877398.html

相关文章

  • 文件操作的基本流程
    文件操作的基本流程1.基本流程有了文件的概念,我们无需再去考虑操作硬盘的细节,只需要关注操作文件的流程#1.打开文件,由应用程序向操作系统发起系统调用open(...),操作系统打开该文件,对应一块硬盘空间,并返回一个文件对象赋值给一个变量ff=open('a.txt','r',encoding='utf-8'......
  • fileinput:一个txt文件的Python库
    文件处理和输入流时,Python中的fileinput模块是一个非常有用的工具。fileinput模块允许迭代处理多个文件,同时还可以处理标准输入流。以下是Python中fileinput模块的五个常见用法。1.逐行迭代文件fileinput模块可以用于逐行迭代处理文件中的内容。importfileinputforlinei......
  • 基于FPGA的图像直方图统计实现,包括tb测试文件和MATLAB辅助验证
    1.算法运行效果图预览  2.算法运行软件版本vivado2019.2 matlab2022a 3.算法理论概述      基于FPGA的图像直方图统计实现主要是通过利用FPGA的并行处理能力,对图像中的每个像素进行统计,以计算出每个灰度级出现的次数或概率。这个过程涉及到对图像数据的快速......
  • python在word文件指定的文字下划线
    #coding:utf-8importosfromwin32com.clientimportDispatchdefget_string_index(substring,string):"""获取同一字符串中的多个相同字符串的起始索引:paramsubstring:需查找的字符串:paramstring:被查找的字符串:return:"""in......
  • 使用SpringBoot实现文件上传和下载
    上传文件:1.在`pom.xml`文件中添加依赖:xml<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot<......
  • 每个.NET开发都应掌握的C#处理文件系统I/O知识点
    上篇文章讲述了C#多线程知识点,本文将介绍C#处理文件的知识点。在.NET开发领域,文件系统I/O是一个至关重要的主题,尤其是在处理文件、目录和数据存储方面。C#作为.NET平台的主要编程语言,提供了丰富而强大的文件系统I/O功能,为开发人员提供了灵活的工具,使其能够高效地处理文件操作。本......
  • MySQL基本操作
    //mysql数据库管理工具简称叫数据库(存放数据,作为动态网站开不可缺少的一环)mysql是一种关系型数据库基本语法:1.查询当前MySQL下有的所有数据库showdatabases;2.创建数据库createdatabase数据库名数据库选项(字符集,校对集)(大部分情况我们都不进行数据选项的设置)......
  • windows 文件夹共享 设置免密共享
    https://jingyan.baidu.com/article/86f4a73ea60a6f37d6526985.html https://blog.csdn.net/lipengfei_1993/article/details/106297073  不要密码共享有些上位机或者AOI相机的data,可以通过共享访问文件进行解析。把每一台aoi的电脑设置共享,然后在在机房的一台工控机安装......
  • python文件不显示cmd黑窗口,打包py,pyw文件为exe文件
    问题描述:编写的python文件为定时任务,需要长时间运行,但是打开的cmd黑色窗口看起来很不舒服,于是打包为exe文件,隐藏cmd黑色窗口步骤:1.使用pipinstallpyinstaller命令安装pyinstaller(前提是已安装python);2.很多时候出现pip版本过老的报错,此时使用pip--version查看pip版本,确定......
  • vscode 工作区与文件夹设置
    背景:学习vue3的时候发现vue2对应的vetur插件 与vue3的volar插件冲突,于是开始了解vscode怎么实现兼容多项目兼容不用配置。项目设置管理为了适应不同项目的需要不一样的项目设置,vscode推出了文件夹设置(Folder),将差异的配置存放在项目根目录的.vscode/setting.json中,打开项目......