博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python基础之文件操作
阅读量:4511 次
发布时间:2019-06-08

本文共 4171 字,大约阅读时间需要 13 分钟。

文件操作的基本流程

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

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

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

f = open('文件名','r/w',encoding= 'utf-8' )
th open('源文件',encoding='utf-8') as f:    #打开文件,自带关闭功能    passwith 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\nprint('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 fhprint(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 gbkf.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 osos.remove('原文件')os.rename('原文件.bak','原文件')进阶例子#1.创建一个新文件f2 = open('原文件.bak','w',encoding='utf-8')#2.把原来的文件中的内容读出来f = open('原文件',encoding='utf-8')count = 0for 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 osos.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 osos.remove('原文件')os.rename('原文件.bak','原文件')

 

转载于:https://www.cnblogs.com/mds---123/p/7761912.html

你可能感兴趣的文章
用户画像
查看>>
HTTP报文(面试会问开发时常用的报文头格式)
查看>>
机器学习从业人员到底做什么?
查看>>
word发表博客的方法
查看>>
Programming Erlang_CHAPTER2_Basic Erlang 学习笔记(2)。
查看>>
Linux基础
查看>>
【模板】高精度
查看>>
弱弱的玩下Javascript
查看>>
二叉树相关操作
查看>>
在webstorm开发微信小程序之使用阿里自定义字体图标
查看>>
序列化模块/模块/包
查看>>
eclipse maven plugin 插件 安装 和 配置
查看>>
收集一些复杂有用的正则表达式
查看>>
子数组求和之大数溢出
查看>>
浏览器预览office文件(word,Excel,等)
查看>>
MySQL工具汇总
查看>>
cookie
查看>>
如何使用Eclipse编译C,C++,JAVA程序
查看>>
php小程序-文章发布系统
查看>>
使用md5加密的登录密码
查看>>