python基础篇 08-文件基本操作

open(r'e:\a.txt',)# r 代表使用原字符


# r  w  a
# r+ w+ a+
# r打开不存在的文件都会报错  只能读 不能写                    只读模式
# r+ 文件不存在则报错 能读写,从f.seek(0)开始写 覆盖写 由于文件大小不同不能获取到文件指针最后位置,所以不能追加写  只能覆盖写 所以此种方法一般不用
# r r+ 打开存在文件不清空,文件指针从 0 开始

# w 文件不存在,能新建文件,只能写 不能读、清空写             只清空写模式
# w+ 文件不存在则新建 能读写,清空写
# w+ w 打开文件就清空了  所以     一般不使用此中方法

# a 文件不存在则新建, 能写 不能读  追加写                   只追加写模式
# a+ 文件不存在则新建,能读写,追加写 + f.seek(0)            此种方式常用


"""
修改文件内容例子
"""
f = open('a.txt','a+',encoding='utf-8') #三种模式 默认r模式、 如果有中文需要加encoding='utf-8' 读文件时候,如果文件不存在则报错
f.seek(0)
result = f.read()           # 读取文件中所有的内容
new_result = result.upper() #修改文件内容
f.seek(0)                   #读完文件后 文件指针返回到最前面
f.truncate()                #清空文件内容
f.write(new_result)         # 需要指定文件为 w 模式
f.close()

"""
读文件方式
"""
result = f.readlines()    #返回一个列表,列表中每个元素是一行元素
result = f.readline()     #一行一行的读取文件,



"""
    写入list例子
"""
names = ['fd','lhy','hzy','wq']
f.write(names)            # 写入内容 必须是 字符串,list无法写。是字符串的 用write()函数 抛异常
f.writelines(names)       #可以写list中的内容, 循环list中元素且元素格式必须是字符串格式,以字符串格式写入文件。是list的用 writelines()函数


# 换行写
new_name = '\n'.join(names)         #将list 以 \n 拼接list中元素,返回字符串,使用write()方法写
f.write(new_name)                   # 写入拼接后的字符串


# 非字符串转换为字符串写
numbers = [1,2,3,4,56]
for index in range(len(numbers)):
    numbers[index] = str(numbers[index])
# print(numbers)
f.writelines(numbers)               # 写入list中元素 循环写


f.close()

#文件指针:

 读写大文件 或者 修改文件中内容常用方法思路:

with open('user.txt',encoding='utf-8') as f: #文件对象,文件句柄
    for line in f:              # 直接循环f 则取文件每一行
        line = line.strip()
        if line:
            print(line)

#1、读取到文件所有内容
#2、替换 new_str
#3、清空原来的文件
#4、写进去新的


#新的
import os

with open('words.txt',encoding='utf-8') as fr,open('words_new.txt','w',encoding='utf-8') as fw:
    for line in fr:
        if line.strip():
            fw.write(line.strip().upper()+'\n')
os.remove('words.txt')                      #删除文件
os.rename('words_new.txt','words.txt')      # 修改文件名称

 

posted @ 2021-03-26 12:51  捞铁  Views(24)  Comments(0Edit  收藏  举报