文件操作 

 

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

 

我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序是无法直接操作硬件的,这就用到了操作系统。操作系统把复杂的硬件操作封装成简单的接口给用户/应用程序使用,其中文件就是操作系统提供给应用程序来操作硬盘虚拟概念,用户或应用程序通过操作文件,可以将自己的数据永久保存下来。

 

读    1.、找到文件 2、打开文件  3、关闭

#open打开文件是依赖了操作系统的提供的途径
#操作系统有自己的编码,open在打开文件的时候默认使用操作系统的编码
#win gbk  mac/linux utf-8

f = open('歌词','w',encoding='utf-8')    #f:文件操作符 文件句柄 文件操作对象
a = f.write('7018201890')   #  a =10 数字,写入的长度
print(a,type(a))
print(f,type(f))              #_io.TextIOWrapper name='歌词' mode='w' encoding='utf-8' windows的对应该文件的指针  class '_io.TextIOWrapper'
f.close()

#找到文件详解:文件与py的执行文件在相同路径下,直接用文件的名字就可以打开文件
            #文件与py的执行文件不在相同路径下,用绝对路径找到文件
#文件的路径,需要用取消转译的方式来表示:1.\\ 2.r''
#如果以写文件的方式打开一个文件,那么不存在的文件会被创建,存在的文件之前的内容会被清空  w 模式有清空效果
#习惯叫 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()
#关闭文件详解
#操作系统级别的关闭文件资源:f.close()        必须写
#del f主动释放了一个python程序内存中的变量  可写可不写

f = open('歌词','r',encoding='utf-8')    #f:文件操作符 文件句柄 文件操作对象
# 一次性读出
# content = f.read()                        # read 默认会把文件中所有内容默认一次性全部读出,但是文件过大会造成内存占用过大甚至溢出
# print(content)
#一次读一部分
# f.seek(15)            # seek 移动光标到某个位置
# content = f.read(1)    #read 后加字符数 注:回车符占一个字符= 2个字节 window中换行默认是\r\n
# print(f.tell())        # 光标移动到某个位置  seek(f.tell)
# print(content)
#按照行读,每次执行readline就会往下读一行
# content = f.readline()
# print('readline : ',content.strip())    #strip去掉空格、制表符、换行符
# content2 = f.readline()
# print(content2.strip())    # 一次读取一行   print 带的有回车,所以去掉行末的回车,如果不想让print换行,可以加上end=''  等,以什么结尾
#4.读文件的第四种方式:readlines,返回一个列表,将文件中的每一行作为列表中的每一项返回一个列表
# content = f.readlines()
# print(content)  #将文件的每一行作为元素创建成列表   ,换行符在上边。占用内存
#最常用的是用for 循环操作
for line in f:
    f.seek(0)
    print(line.strip())
# 不占 内存。   用strip将回车符去掉。
#  read, readline ,readlines  都从光标位置读气,光标走过的将不再读出   for 循环中,seek有效
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()
文件练习,购物车模型

相关文章: