python基础之文件操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础之文件操作相关的知识,希望对你有一定的参考价值。

文件操作的基本流程

    计算机系统分为:计算机硬件,操作软件,应用程序三部分。

    通过文件操作就可以将数据永久保存下来。

1,打开文件,得到文件句柄并赋值给一个变量

f = open(文件名,r/w,encoding= utf-8 )
th open(源文件,encoding=utf-8) as f:    #打开文件,自带关闭功能
    pass

with open(原文件名,encoding=utf-8) as f,open(原文件名.back,w,encoding=utf-8) as f:
    pass              #两个文件连用修改,可连用多个,自带关闭功能

2,通过句柄对文件进行操作

data = f.read() #也可以是写

3,关闭文件

f.close()

注意:1,由应用程序向操作系统发起系统调用open(......)
            2,操作系统打开该文件,并返回一个文件句柄给应用程序

            3,应用程序将文件句柄赋值给变量 f

关闭文件注意事项

1,

1,f.close()     #回收操作系统级打开的文件

2,

del f       #回收应用程序级的变量


文件的读写

#1,打开文件的模式有(默认为文本模式)
#     r-------只读模式(默认模式,文件必须存在,不存在则抛出异常)
#     w-------只写模式(不可读,不存在则创建,存在则清空内容)
#     a-------只追加模式(不可读,不存在创建,存在追加内容)
# 2,对于非文本文件,只能使用b模式,‘b’表示字节的方式操作(而所有文件都是以字节的形式存储的,使用这种模式无须考虑文本文件的字符编码,图片文件的jgp格式,视频文件的avi格式)

#3+表示可以同时读写某个文件
# r+,读写(可读可写)
# w+,写读(可读可写)
# a+,写读(可读可写)
# x,只读模式(不可读,不存在则创建,存在报错)
# x+,写读(可读可写)

首先创建一个文件,在进行读写操作:

1,读

#打开文件
# f = open(歌词,r,encoding=utf-8)
f = open(歌词,encoding=utf-8)
#1.读文件的第一种方式:read方法,用read方法会一次性的读出文件中的所有内容
content = f.read()
print(read : ,content)
#2.读一部分内容:read(n),指定读n个单位
print(f.read(5))

#3.读文件的第三种方式:按照行读,每次执行readline就会往下读一行
content = f.readline()

print(readline : ,content.strip())    #strip去掉空格、制表符、换行符
content2 = f.readline()
print(content2.strip())

print(1)  #--> 1\n
print(1\n)  #--> 1\n\n

#4.读文件的第四种方式:readlines,返回一个列表,将文件中的每一行作为列表中的每一项返回一个列表
content = f.readlines()
print(readlines : ,content)

#5.读:最常用
for l in f:
    print(l.strip())

#关闭文件
f.close()
f = open(shoplist,encoding=utf-8) #读文件并整理成需要的数据类型
goods_list = []
for line in f:
    if line.strip():
        goods_dic = {name:None,price:None}
        line = line.strip()
        goods_lst = line.split()
        print(goods_lst)
        goods_dic[name] = goods_lst[0]
        goods_dic[price] = goods_lst[1]
        goods_list.append(goods_dic)
print(goods_list)
f.close()


f = open(shoplist,encoding=utf-8)    #只显示文件中有内容的行
goods_list = []
for line in f:
   if line.strip():
       print(line.strip())
f.close()

2,写

# 习惯叫 f file f_obj f_handler fh
print(f.writable())   #判断文件是否可写
print(f.readable())   #判断文件是否可读
f.write(7018201890)  #写文件的时候需要写数字,需要把数字转换成字符串
f.write(aasjgdlwhoojfjdaj)
f.write(iq349jdsh\n)
f.write(aks)
f.write(\nsdgawo)     #文件的换行
f.write(志强德胜)     #utf-8 unicode gbk
f.close()

3,光标移动

f = open(歌词,r+,encoding=utf-8)
#seek 光标移动到第几个字节的位置
f.seek(0)    移动到最开始
f.seek(0,2)  移动到最末尾
f.truncate(3)  #从文件开始的位置只保留指定字节的内容
f.write(我可写了啊)
tell 告诉我光标在第几个字节
seek移动光标到指定位置
content = f.readline()
print(content.strip())
tell告诉你当前光标所在的位置
print(f.tell())
f.seek(4) #光标移动到三个字节的地方‘\r\n’
content = f.read(1)   #读一个字符
print(***,content,***)
content = f.readline()
print(content.strip())
print(f.tell())
f.close()

文件的换行:   \r,\n,\r\n都可表示换行

文件内的光标移动

4.文件修改:

#文件的修改
#1.创建一个新文件
f2 = open(原文件.bak,w,encoding=utf-8)
#2.把原来的文件中的内容读出来
f = open(原文件,encoding=utf-8)
old_content = f.read()  #原来的内容\n
#3.操作读出来的字符串,把字符串中的内容替换掉
new_content = old_content.replace(,原来)
#4.把替换之后的内容写到新文件里
f2.write(new_content)
f.close()
f2.close()
# #5.删除原文件,新文件重命名成源文件的名字
import os   #os模块
os.remove(原文件)  #删除文件
os.rename(原文件.bak,原文件)  #重命名   #replace(‘老内容’,‘新内容’)

文件的删除
import os   #os模块
os.remove(原文件)  #删除文件

#1.创建一个新文件
f2 = open(原文件.bak,w,encoding=utf-8)
#2.把原来的文件中的内容读出来
f = open(原文件,encoding=utf-8)
for line in f:
    new_line = line.replace(原来,)
    f2.write(new_line)
f.close()
f2.close()
import os
os.remove(原文件)
os.rename(原文件.bak,原文件)

进阶例子
#1.创建一个新文件
f2 = open(原文件.bak,w,encoding=utf-8)
#2.把原来的文件中的内容读出来
f = open(原文件,encoding=utf-8)
count = 0
for line in f:
    if 原来 in line and count == 0:
        new_line = line.replace(原来,)
        f2.write(new_line)
        count = 1
    else:
        f2.write(line)
f.close()
f2.close()
import os
os.remove(原文件)
os.rename(原文件.bak,原文件)

with操作文件
f = open(原文件,encoding=utf-8)
content = f.read()
print(content)
f.close()

with open(原文件,encoding=utf-8) as f:
    # content = f.read()
    # print(content)
    for line in f:
        print(line.strip())

with open(原文件,encoding=utf-8) as f,open(原文件.bak,w,encoding=utf-8) as f1:
    for line in f:
        new_line = line.replace(原来,)
        f1.write(new_line)
import os
os.remove(原文件)
os.rename(原文件.bak,原文件)

 



以上是关于python基础之文件操作的主要内容,如果未能解决你的问题,请参考以下文章

python基础之文件基本操作

python基础之文件操作

自动化运维Python系列之基础函数和文件操作

python基础之文件操作

python基础之文件操作

python基础之文件操作