python读、写、拷贝等基本文件操作

本篇简单介绍文件的读、写、拷问文件、修改名称、删除等基本操作。
python操作文件时,可直接open(“文件路径”,mode) open之后,需得close()。因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的
python引入了with语句自动调用close()方法,这样可不用考虑底层的东西,只关注操作即可。

1 .文件权限

文件无外乎读r(read)和写w(write),r和w文件指针默认都在从文件开头,故r+会在文件开头追加内容,w,w+会删除原内容。所以还有一个追加的操作a,默认指针在文件的末尾。具体介绍如下:
在这里插入图片描述

2.读文件

read()读取整个文件,若文件过大,可限制读取的数量,read(5)每次最多读取5个字符
readline() 每次读取一行
readlines() 按行读取整个文件,以列表形式展示。
以上三种方法都会将文件的换行符(\n)读取出来。

list1 = ["我是第一行\n", "我是第二行\n", "\n", "我是第四行,第三行是空行"]
with open(r"C:\Users\Administrator\Desktop\1.txt", "w+") as file1:
    file1.writelines(list1)
    file1.seek(0, 0) # 写完之后,指针在文件的末尾,需返回文件开头,才可以读取刚才写的内容
    print("读取3个字符:", file1.read(2))
    print("读取指针所在的那行内容:", file1.readline())  # 会读取换行符
    print("按行读取指针往下的内容:", file1.readlines())

打印结果为:
在这里插入图片描述
从打印结果可看出打开文件后,读过的指针不会返回文件开头,会一直向下走。如果要在指定位置插入文本,就要用到seek(offdet,[from])
offset变量表示要移动的字节数,from变量指定开始移动字节的参考位置。 from 为 0时,代表文件开头,from为1时,代表使用当前位置。from为2时,代表文件末尾。

3.写操作

write() writelines() 中必须添加的是字符串,若是其他格式的,需要先转化为字符串。writelines()可写入字符串类型的列表。
我们接着在刚才的1.txt文件继续写入

with open(r"C:\Users\Administrator\Desktop\1.txt", "a+") as file2: # 追加内容用"a"
    file2.write("\n写在最后")
    file2.seek(0, 0)  # 将指针回归到文件开头
    print(file2.read())

在这里插入图片描述再比如在文件中随机写入20个1-100的数字。

import random
list1 = [random.randint(1, 100) for i in range(20)]
list2 = list(map(str, list1))  # 将int转化为str类型
str1 = ",".join(list2)  # 将列表转为为字符串并用逗号分隔。否则打印出来的数字不知道如何分割。
with open(r"C:\Users\Administrator\Desktop\.1txt", "+") as file:
    file5.writelines("\n"+str1)
    file5.seek(0, 0)  # 将指针回归到文件开头
    ret = file5.read()  # 读取文件
    print(file3.readlines())  # 读取文件

在这里插入图片描述

4.指定位置插入内容

若想在文件中特定位置插入内容,可先匹配找到要插入的位置,进行插入。

with open(r"C:\Users\Administrator\Desktop\1.txt", "rt") as f:
    content = str(f.readlines())
    pos = content.find("转朱阁")  # 找到要插入位置的附件文本
    insert = input("输入要插入的内容:")  
    if pos != -1:
        content = content[:pos] + insert + content[pos:]  # 确定插入的位置
        with open(r"C:\Users\Administrator\Desktop\1.txt", "w+") as file1:
            file1.write(content)
            file1.seek(0, 0)
            print(file1.read())

在这里插入图片描述

5.文件拷贝、删除文件、修改文件名称等

读写文件就可完成一次文件拷贝,当然也可是使用shutil.copyfile(“file”,“newfile”)函数
删除文件可使用os.remove(),删除整个文件夹要用os.rmdir()
修改文件名称要用os.rename(“oldname”,“newname”)

import shutil
shutil.copyfile(r"C:\Users\Administrator\Desktop\1.txt",r"C:\Users\Administrator\Desktop\10.txt")

if os.path.exists(r"C:\Users\Administrator\Desktop\11.txt"):
    os.remove(r"C:\Users\Administrator\Desktop\11.txt")  # 删除文件
else:
    print("文件不存在")
os.rename(r"C:\Users\Administrator\Desktop\6.txt", r"C:\Users\Administrator\Desktop\9.txt") # 修改文件名称

版权声明:本文为liyali2020原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。