Python 入门 —— Python 文件操作与通过 josn 进行数据存储

Python 文件操作与josn–数据存储

1 文件操作

  • 读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C是兼容的。
    读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。
  • 操作文件的函数/方法
    在python中要操作文件需要记住一个函数和三个方法
    python中一切皆对象
    open :打开文件,并且返回文件操作对象
    read :将文件内容读取到内存
    write:将指定的内容写入到文件
    close:关闭文件
    open 函数负责打开文件,并且返回文件对象
    read/wirte/close三个方法都需要通过文件对象调用
  • read方法–读取文件
    open的第一个参数是要打开的文件明(文件名区分大小写)
    如果文件存在,返回文件操作对象
    如果文件不存在,会抛出异常
    read方法可以一次性读入并返回文件的所有内容
    close方法负责关闭文件

编辑TEST文件:
内容:

I’m used for test.

通过python进行打开

1.1 文件的读取

 # 1. 打开文件
 open方法:负责打开文件
 执行如下:
 f = open('TEXT')     
 # TEXT 文件与本 .py python源文件在同一目录下,故不需要添加绝对路径 
 # 2.读取文件
 # read方法:负责读取文件,
 # 可一次性读入并返回文件的所有内容
 f.read()
 test = f.read()
 print = test
 # 3.关闭文件
 # close方法:负责关闭文件
 f.close()

 # 在开发中,通常会先编写打开和关闭的代码

执行如下:
这里写图片描述
控制台显示如下:这里写图片描述
显示了文件的内容

1.2 文件指针:

  • 文件指针:
    文件指针标记从哪个位置开始读取数据
    第一次打开文件时,通常文件指针会指向文件的开始位置
    当执行了read方法后,文件指针会移动到读取内容的末尾

示例:

 f = open('TEXT')    # 打开文件

 text = f.read()     # 定义 text 为读取文件
 print text          # 显示 text 结果
 print type(text)    # 显示类型
 print len(text)     # 显示 text 长度

 print '#' * 50

 text = f.read()     # 再次定义 text
 print text          # 查看文件内容
 print len(text)
 f.close()

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述
后面显示为 0 是因为,文件指针,在调用文件内容后,直接指到了文件最后,因此不会显示任何内容,当然没有长读可言

1.3 写文件

  • 执行方式
    file = open(‘filename’,’action’)
    常用的方法有’w’,’a’
    其中’w’为覆盖,’a’为追加

1.4 覆盖

  • 以’w’方式打开文进阿
    如果该文件存在,原文件内容会被覆盖
    如果文件不存在,创建文件并写入

示例:

 file = open('TEST','w')   # 以写的方式打开文件
 test = file.write('HELLO') 
 file.close()             # 关闭文件
 file = open('TEST')
 print file.read()        # 显示文件,查看文件内容
 file.close()             # 关闭文件

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述

1.5 追加

  • 以追加方式打开文件
    如果该文件存在,文件指针会放在文件的末尾
    如果文件不存在,创建文件并写入

示例:

 f = open('TEST')

 f = open('TEST')
 print f.read()

 f.close()

 f = open('TEST', 'a')

 f.write('python')  # 追加到文件内容的后面
 # 若想换行追加可在要追加内容前加上 \n 换行符号
 f.close()
 f = open('TEST')
 print f.read()

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述

1.6 文件的逐行读取

若是文件内容过大直接将文件的全部内显示到控制台,此时需要逐行对文件内容进行显示

示例:
 文件TEXT的内容为
 HELLOpython
 python


 通过python进行查看

 import time           # 调用 time 函数
 test = open('/etc/passwd')


 while True:              
     text = test.readline()
     print text,         # ',' 表示取消换行
     time.sleep(1)       # time.sleep(1) 表示每隔 1 秒显示一次
     if not text:
         break

 test.close()

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述
在一行一行的进行显示

1.7 文件的复制

1.7.1 全部复制

示例

 # 1.打开文件
 # 源文件以只读的方式打开
 file_read = open('TEST')
 # 目标文件以写的方式打开
 file_write = open('TEST_COPY','w')

 # 从源文件中读取内容
 text = file_read.read()
 # 将读取到的内容写到目标文件中
 fiel_write.write(text)
 # 关闭文件
 file_read.close()
 file_write.close()

执行如下:
这里写图片描述
复制成功后,将会出现文件TESST_COPY
这里写图片描述
其内容,与TEST内容相同
这里写图片描述

1.7.2 逐行复制

对文本内容进行逐行复制

示例:

test = open('/etc/passwd')
test_write = open('passwd_copy', 'w')


while True:
    text = test.readline()   # 逐行对要复制的文件进行读取

    if not text:             # 如果文件指针指到最后,则退出循环
        break
    test_write.write(text)   # 将text的内容写入新文件

test_write.close()

test.close()

执行如下:
这里写图片描述
复制的新文件的内容如下:
这里写图片描述

1.8 文件打开的第二种方式:with

  • 通过 with 进行对文件内容的查看
    关键字 with 在不需要访问文件后将其关闭,在这个程序中,
    我们调用了open(),但没有调用close();也可以调用 open() 和 close 来打开
    和关闭文件,但这样做时,如果程序存在bug,导致close()语句没有执行,
    文件将不会关闭,未妥善地关闭文件可能会导致数据丢失或受损,
    如果在程序中过早地调用close(),
    你会发现需要使用文件时它已经关闭(无法访问),
    这会导致更多地错误,你并非在任何情况下都能轻松地确定关闭文件地恰当时机
    通过使用with结构,可让python去确定,
    你只管打开文件,并在需要时使用它,
    python会在合适的时候自动将其关闭

以 TEST文件为例:
TEST文件内容如下:
这里写图片描述

示例:

 # 通过with的方式进行文件的打开
 with open('TEST') as file_object:
     # 调用read方法进行文件内容的查看
     contents = file_object.read()
     print contents

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述

逐行对文件进行读取
 filename = 'TEST'
 with open(filename) as file_object:
     # 通过for语句,逐行对文件进行读取
     for line in file_object: 
         print line

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述

对文件进行写入
 # 将文件名用变量进行表示,文件若不存在,执行程序后
 # 会自动新建文件,并执行操作
 filename = 'python'
 # 以写的方式进行文件的打开
 with open(filename, 'w') as file_object:
     # 写入如下内容,添加换行符,进行换行添加
     file_object.write('I love study.\n')
     file_object.write('I love python.')
     # 以默认读的方式进行打开
 with open(filename) as file_object:
     # 在控制台显示文件内容
     print file_object.read()

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述

对文件内容进行添加
 # 将文件名用变量进行表示
 filename = 'python'
 # 以添加的方式进行文件的打开
 with open(filename, 'a') as file_object:
     # 添加如下内容,添加换行符,进行换行添加
     file_object.write('I love study.\n')
     file_object.write('I love python.')
     # 以默认读的方式进行打开
 with open(filename) as file_object:
     # 在控制台显示文件内容
     print file_object.read()

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述

对文件内容进行复制
 # 将文件名用变量进行表示
 filename = 'python'
 f = 'python_copy'
 # 以读的方式打开要进行复制的文件
 with open(filename) as file_obj:
     test = file_obj.read()
 # 以写的方式打开府之后的文件
 with open(f, 'w') as file_object:
     # 将要进行复制的文件的内容,添加到新的文件中
     file_object.write(test) 

     # 以默认读的方式进行打开
 with open(f) as file_object:
     # 在控制台显示复制后的文件的内容
     print file_object.read()

执行如下:
这里写图片描述
控制台显示如下:与上面的python的文件内容完全相同
这里写图片描述

2 josn–数据存储

  • json(javascriptObject notation)格式最初是为javascript开发的,但随后成了一种常见格式,被包括python在内的众多语言采用
    很多程序都要求用户输入某种信息,
    程序都把用户提供的信息存储在列表和字典等数据结构中,
    用户关闭程序时,你几乎总是要保存他们的信息:
    一种简单的方式是使用模块 json 来存储数据
    (在python中使用json的时候,主要也就是使用json模块,json是以一种良好的格式来进行数据的交互)
    模块 json 让你能够将简单的 Python 数据结构转存到文件中,
    并在程序再次运行时加载该文件中的数据,
    你还可以使用 json 在 Python 程序之间分享数据,
    更重要的是, json 数据格式并非 Python 专用的,
    这让你能够将以json格式存储的数据与使用其他编程语言的人分享

通过 json 进行数据的存储与调用

通过 json.dump 方法将数据导入文件中
 import json   # 调用 json 模块
 number = [1,2,3,4]  # 定义列表

 with open('numbers.json','w') as f_obj:
     # 我们使用函数json.dump()将数字列表存储到文件中
     json.dump(number,f_obj)

执行如下:
这里写图片描述
产生的存储文件的内容如下:
这里写图片描述
* .json 中存储的数据一般是数据结构,在python 中就是,列表,字典等*

通过 json.load 方法加载存储在 .json 中的信息

示例:

 import json
 filename = 'numbers.json'
 with open(filename) as f_obj:
     # 我们使用函数json.load加载存储在numbers.json中的信息
     # 并将其存储到变量numbers中
     numbers = json.load(f_obj)
 print numbers

执行如下:
这里写图片描述
控制台显示如下:
这里写图片描述

json 应用示例
  • 如果以前存储了用户,就显示,否则,就提示用户输入用户名并存储它

代码如下:

 import json
 filename = "username.json"
 try:
     with open(filename) as f_obj:
         username = json.load(f_obj)
 except ValueError:
     username = raw_input("What is you name? ")
     with open(filename,"w") as f_obj:
         json.dump(username,f_obj)
         print "We'll remember you when you come back %s" % username
 #依赖于try代码块成功执行的代码都应放到else代码块中:
 else:
     print "Welcome back %s " % username

执行如下:
这里写图片描述
控制台显示如下:
若是没有用户
这里写图片描述
若是有用户
这里写图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值