python读写文件&is和==区别&常用模块

is和==区别

  • is不仅数据一样内存地址也一样
  • == 只判断数据和数据类型一样即可

读写文件

  • 经典面试题:现在有一个5G的文件,用python写入另一个文件里

    • read(): 指定读取指定大小的文件(默认一次读取所有)
    • readline(): 逐行读取,适合读大文件
    • readlines(): 一次性读取所有文件, 将文件按行读取成列表
  • 我们使用了一个 while 循环来读取文件内容,每次最多读取 8kb 大小

  • 这样可以避免之前需要拼接一个巨大字符串的过程,把内存占用降低非常多。

#!/usr/bin/python
# -*- coding: utf-8 -*-
def read_big_file_v(fname):
    block_size = 1024 * 8
    with open(fname,encoding="utf8") as fp:
        while True:
            chunk = fp.read(block_size)
            # 当文件没有更多内容时,read 调用将会返回空字符串 ''
            if not chunk:
                break
            print(chunk)
path = r'C:\aaa\luting\edc-backend\tttt.py'
read_big_file_v(path)

常用模块

  • re模块
findall: findall(pattern,string),查找所有满足条件的字符

search: search(pattern,string[,flags]),在字符串中查找,返回第一个匹配的字符串 分装返回对象为,span = (0,5) (匹配的位置)左闭右开

match : match(pattern,string[,flags]) 在字符串开头查找,与search返回值相同

split:split(pattern,string[,maxsplit=0])根据模式切割字符串

compilecompile(pattern,[,flags]) 根据包含正则表达式的字符串创建模式对象

sub : sub(pat,repl,string[,count=0]) 将字符串中模式pat匹配的子串都替换为repl

  • subprocess 模块

subprocess原理以及常用的封装函数

  • 运行python的时候,我们都是在创建并运行一个进程。像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序
  • 在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序。
  • subprocess包中定义有数个创建子进程的函数,这些函数分别以不同的方式创建子进程,所以我们可以根据需要来从中选取一个使用
  • 另外subprocess还提供了一些管理标准流(standard stream)和管道(pipe)的工具,从而在进程间使用文本通信。

subprocess常用函数

#1、返回执行状态:0 执行成功
retcode = subprocess.call(['ping', 'www.baidu.com', '-c5'])

#2、返回执行状态:0 执行成功,否则抛异常
subprocess.check_call(["ls", "-l"])

#3、执行结果为元组:第1个元素是执行状态,第2个是命令结果
>>> ret = subprocess.getstatusoutput('pwd')
>>> ret
(0, '/test01')

#4、返回结果为 字符串 类型
>>> ret = subprocess.getoutput('ls -a')
>>> ret
'.\n..\ntest.py'


#5、返回结果为'bytes'类型
>>> res=subprocess.check_output(['ls','-l'])
>>> res.decode('utf8')
'总用量 4\n-rwxrwxrwx. 1 root root 334 11月 21 09:02 test.py\n'

将dos格式文件转换成unix格式

subprocess.check_output(['chmod', '+x', filepath])
subprocess.check_output(['dos2unix', filepath])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值