Python之文件处理

python进行文件处理其实也很简单,无法就那么几个要点。
1、打开文件
2、读取文件
3、写入文件
围绕上面这三个要点展开了许多的方法,调用方法进行各种花样的文件处理。听起来仿佛很牛逼,实际上没有多少花头,深刻理解了也就自然而然的掌握了。

例如先自己创建一个文件,假设在D:\python-project\test.txt

下面一个一个的来说明上面三个知识点以及相对应的方法:

打开读取文件
-- 打开文件就是open方法,但是打开文件的目的是读取文件内容或者写入内容。
读取的方法:
1> r 只读
2> r+ 读写

my_file = 'D:\python-project\test.txt'
f = open('D:\python-project\test.txt','r',encoding='utf-8')
print(f)
输出结果:<_io.TextIOWrapper name='D:\\python-project\\test.txt' mode='r' encoding='cp936'>

看到了吗?上面这个结果是什么呀?拿到的f实际上是一个文件句柄,有了这个才可以调用文件的各种方法。打开文件并读取还有另外一种写法:

with open('D:\python-project\test.txt','r',encoding='utf-8') as f:
        pass

--其中encoding='utf-8'可以不写,默认好像是gbk

读取文件的四个方法:
(1)f.read()
把文件中的所有内容全部读取出来,返回的是字符串类型。

(2)f.readline()
按照行数把文件内容读取出来,一次只读取一行,类似于next()方法,返回的是字符串类型。

(3)f.readlines()
按照每一行读取,并把文件中所有内容读出来后存放在表格中,返回的是一个列表。

(4)f.readable()
判断是否有可读权限,如果有可读权限,则返回True,否则返回False。

写文件

f = open('D:\python-project\test.txt','w')
或
with open('D:\python-project\test.txt','w') as f:
        pass

写入文件的三个方法:
(1)f.write('data')
只能添加字符串,不可能添加序列,如列表

(2)f.writelines(['data1','data2'])
可以添加字符串,也可以添加序列,但不能是数字序列。

(3)f.writable()
判断是否有可写权限,如果有可写权限,则返回True,否则返回False。

下面举个例子来进行文件处理:
需求:有一个http.conf文件,内容如下:

test this is a test file
 	127.0.0.1 weight 200
	127.0.0.2 weight 300
	127.0.0.3 weight 300
	127.0.0.4 weight 300

test this is a test file
 	192.168.0.1 weight 200
	192.168.0.2 weight 300
	192.168.0.3 weight 300
	192.168.0.4 weight 300

warpper this is result
 	192.168.0.1 weight 200
	192.168.0.2 weight 300
	192.168.0.3 weight 300
	192.168.0.4 weight 300


warpper wrong
 	10.10.0.1 weight 200
	10.10.0.2 weight 300
	10.10.0.3 weight 300
	10.10.0.4 weight 300

现在要求获取warpper this is result下面的四行IP信息,打印出来并存放到一个列表中:
    192.168.0.1 weight 200
	192.168.0.2 weight 300
	192.168.0.3 weight 300
	192.168.0.4 weight 300

程序代码如下:

点击查看代码
def featch(data):
    tag = False
    message = " ".join(['warpper',data])
    print(message)
    with open('abc.txt','r',encoding='utf-8') as f:
        ret = []
        for line in f:
            if line == message:
                tag = True
                continue
            if line.startswith('warpper') and tag == True:
                break
            if tag:
                print(line)
                ret.append(line)

        # else:
        #     print('你要找的内容不存在')
        return ret

def add(data):
    pass

def update(data):
    pass

def delete(data):
    pass


if __name__ == '__main__':
    msg = '''
        1:查看
        2:增加
        3:修改
        4:删除
        5:退出
    '''
    while True:
        msg_dic = {
            '1':featch,
            '2':add,
            '3':update,
            '4':delete
        }
        print(msg)
        choice = input('请输入你的选择:')
        data = input('请输入你要查找的内容:')
        if not choice:continue
        if choice == '5':break
        msg_dic[choice](data)
posted @ 2024-07-08 13:44  派森马  阅读(1)  评论(0编辑  收藏  举报