Python学习三(文件)

1、文件操作

读取:

with open(文件位置,读写方式,编码方式) as 变量名:

 变量名.read()  #读取

例如:

with open('D:\My_project\me.txt', 'r',encoding='utf-8') as my_file:
    content = my_file.read()

Windows系统中,在文件路径中使用反斜杠(\ )而不是斜杠(/ ):

#python3.7 文件操作

# r   只读,默认打开方式,当文件不存在时会报错
# w   只写,当文件不存在时会自动创建文件,文件内容只能是字符串,只能写入字符串
# r+  可读可写,当文件不存在时会报错
# w+  可读可写。当文件不存在时会新建
# a   追加文件,不可读
# a+  追加文件,可读可写
# rb  以二进制读模式打开,只可读
# rb+ 以二进制写读写模式打开,可读可写,当文件不存在时报错
# wb  以位进制写模式打开,只可写
# wb+ 以二进制读写模式打开,可读可写。当文件不存在时新建
# ab  以二进制追加模式打开,追加文件,不可读
# ab+ 以二进制读写模式打开,追加文件。可读可写

单行读取:

with open('me.txt', 'r') as my_file:
    for content in my_file:
        print('---' + content.rstrip())

使用readline(),readlines()读取单行

with open('me.txt', 'r') as my_file:
    line = my_file.readline()         #只读取第一行
    print(line)

    for content in line:  
        print('---' + content.rstrip())

上边如果更改为:my_file.readlines() ----这是读取每一行,结果是存在list中,结果如右图

结果                    

写入文件: 

with open(文件名,能写的模式(w,r+...))  as  变量名:

变量.write(写入的内容)

with open('me.txt', 'r+') as my_file:
    my_file.write('---hello you')
    line = my_file.readline()
    print(line)

注意 Python只能将字符串写入文本文件。要将数值数据存储到文本文件中,必须先使用函数str() 将其转换为字符串格式。

写入多行时,可以加入换行字符:

my_file.write('---hello you \n')

2、异常

try:

     程序块

excep  异常名:

    异常处理

 例如:

try:                                                      
    print(5 / 0)
except ZeroDivisionError:
    print('error')
else: 
    print("ok")

结果为: error

try:
    print(5 / 1)
except ZeroDivisionError:
    print('error')
else:
    print("ok")

结果为: 5.0
               ok

 

try-except-else 代码块的工作原理大致如下:Python尝试执行try 代码块中的代码;只有可能引发异常的代码才需要放在try 语句中。有时候,有一些仅在try 代码块成功 执行时才需要运行的代码;这些代码应放在else 代码块中。except 代码块告诉Python,如果它尝试运行try 代码块中的代码时引发了指定的异常,该怎么办。

FileNotFoundError    文件异常

方法split() 以空格为分隔符将字符串分拆成多个部分,并将这些部分都存储到一个列表中。

Python有一个pass 语句,可在代码块中使用它来让Python 什么都不要做

3、存储数据

函数json.dump() 接受两个实参:要存储的数据以及可用于存储数据的文件对象。

使用函数json.load() 加载存储在文件名.json中的信息,并将其存储到变量

4、测试

Python标准库中的模块unittest 提供了代码测试工具。

例如:

first.py

def get_formatted_name(first, last, middle=''):
    if middle:
        full_name = first + ' ' + middle + ' ' + last
    else:
        full_name = first + ' ' + last

    return full_name.title()

test.py

import unittest
from first import get_formatted_name


class NamesTestCase(unittest.TestCase):

    def test_first_last_name(self):
        formatted_name = get_formatted_name('janis', 'joplin')
        self.assertEqual(formatted_name, 'Janis Joplin')
        print(formatted_name)

    def test_first_last_middle_name(self):
        formatted_name = get_formatted_name('wolfgang', 'mozart', 'amadeus')
        self.assertEqual(formatted_name, 'Wolfgang Amadeus Mozart')
        print(formatted_name)


unittest.main()

test开头的方法就是测试方法,不以test开头的方法不被认为是测试方法,测试的时候不会被执行。

unittest.TestCase提供了很多内置的条件判断,我们只需要调用这些方法就可以断言输出是否是我们所期望的。

setUp与tearDown

可以在单元测试中编写两个特殊的setUp()tearDown()方法。这两个方法会分别在每调用一个测试方法的前后分别被执行。

setUp()tearDown()方法有什么用呢?设想你的测试需要启动一个数据库,这时,就可以在setUp()方法中连接数据库,在tearDown()方法中关闭数据库,这样,不必在每个测试方法中重复相同的代码:

class TestDict(unittest.TestCase):

    def setUp(self):
        print 'setUp...'

    def tearDown(self):
        print 'tearDown...'

可以再次运行测试看看每个测试方法调用前后是否会打印出setUp...tearDown...

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值