zoukankan      html  css  js  c++  java
  • Python读写文件&is和==区别&常用模块

    目录

    1. 读写文件

    2. is和==区别

    3. 常用模块

    1. 读写文件

      1. open函数用来打开文件

        1. open(name[, mode[, buffering]])  打开文件可传的参数

          1. open函数使用一个文件名作为唯一的强制参数,然后返回一个文件对象。
          2. 模式(mode)和缓冲(buffering)参数都是可选的

        2. 打开文件的模式有

          • r,只读模式(默认)。
          • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
          • a,追加模式。【可读; 不存在则创建;存在则只追加内容;】

          注:  "+" 表示可以同时读写某个文件

          • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
          • w+,写读

          • a+,同a

        3、with语句

          作用:将打开文件写在with中当对文件操作完成后with语句会自动帮关闭文件,避免忘记写f.close() 

    with open("data1.txt",'r',encoding = 'utf-8') as f:
        for line in f:
            print(line)
    with 读文件

      2.  三种读操作比较

        read(): 指定读取指定大小的文件(默认一次读取所有)

        readline(): 逐行读取,适合读大文件

        readlines(): 一次性读取所有文件, 将文件按行读取成列表

    #1. read()一次读取所有内容
    '''aaa111
    bbb222'''
    f = open(r"data.txt")
    print(f.read())
    f.close()
    
    #2. readline(),每次只读取一行,光标下移
    '''
    0: aaa111
    
    1: bbb222
    '''
    f = open(r"data.txt")
    for i in range(2):
        print(str(i) + ": " + f.readline(),)
    
    #3. 一次读取所有,每行作为列表的一个值
    '''['aaa111
    ', 'bbb222
    ']'''
    f = open(r"data.txt")
    print(f.readlines())
    
    三种读操作举例
    三种读写操作举例

      3.  将data1.txt中内容读取并写入到data2.txt中

     1 f1 = open('data1.txt','r')
     2 f2 = open('data2.txt','w')
     3 
     4 for line in f1:
     5     f2.write(line)
     6 
     7 f1.close()
     8 f2.close()
     9 
    10 将data1.txt内容读取到data2.txt
    View Code

      4. 使用eval()方法将文件读取成字典 

    1 f = open('data1.txt')
    2 f1 = (f.read())
    3 data = eval(f1)
    4 f.close()
    5 print(data)         # 运行结果: {'k2': 'v2', 'k3': 'v3', 'k1': 'v1'}
    View Code

      5. 将文件内容读取成列表

    1 lock = []
    2 f = open("password.txt")
    3 for name in f.readlines():
    4     lock.append(name.strip('
    '))
    5 print(lock)
    6 运行结果: ['aaa 111', 'bbb 222', 'ccc 333']
    View Code

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

        read(): 指定读取指定大小的文件(默认一次读取所有)

        readline(): 逐行读取,适合读大文件

        readlines(): 一次性读取所有文件, 将文件按行读取成列表

      我们使用了一个 while 循环来读取文件内容,每次最多读取 8kb 大小

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

     1 #!/usr/bin/python
     2 # -*- coding: utf-8 -*-
     3 def read_big_file_v(fname):
     4     block_size = 1024 * 8
     5     with open(fname,encoding="utf8") as fp:
     6         while True:
     7             chunk = fp.read(block_size)
     8             # 当文件没有更多内容时,read 调用将会返回空字符串 ''
     9             if not chunk:
    10                 break
    11             print(chunk)
    12 path = r'C:aaalutingedc-backend	ttt.py'
    13 read_big_file_v(path)
    View Code

    2. is和==区别

      is不仅数据一样内存地址也一样

      == 只判断数据和数据类型一样即可

    3. 常用模块

      re模块

     1 findall: findall(pattern,string),查找所有满足条件的字符
     2 
     3 search: search(pattern,string[,flags]),在字符串中查找,返回第一个匹配的字符串 分装返回对象为,span = (0,5) (匹配的位置)左闭右开
     4 
     5 match : match(pattern,string[,flags]) 在字符串开头查找,与search返回值相同
     6 
     7 split:split(pattern,string[,maxsplit=0])根据模式切割字符串
     8 
     9 compile:compile(pattern,[,flags]) 根据包含正则表达式的字符串创建模式对象
    10 
    11 sub : sub(pat,repl,string[,count=0]) 将字符串中模式pat匹配的子串都替换为repl
    View Code

      subprocess 模块

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

          运行python的时候,我们都是在创建并运行一个进程。像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序

          在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序。

          subprocess包中定义有数个创建子进程的函数,这些函数分别以不同的方式创建子进程,所以我们可以根据需要来从中选取一个使用

          另外subprocess还提供了一些管理标准流(standard stream)和管道(pipe)的工具,从而在进程间使用文本通信。

        subprocess常用函数

     1 #1、返回执行状态:0 执行成功
     2 retcode = subprocess.call(['ping', 'www.baidu.com', '-c5'])
     3 
     4 #2、返回执行状态:0 执行成功,否则抛异常
     5 subprocess.check_call(["ls", "-l"])
     6 
     7 #3、执行结果为元组:第1个元素是执行状态,第2个是命令结果
     8 >>> ret = subprocess.getstatusoutput('pwd')
     9 >>> ret
    10 (0, '/test01')
    11 
    12 #4、返回结果为 字符串 类型
    13 >>> ret = subprocess.getoutput('ls -a')
    14 >>> ret
    15 '.
    ..
    test.py'
    16 
    17 
    18 #5、返回结果为'bytes'类型
    19 >>> res=subprocess.check_output(['ls','-l'])
    20 >>> res.decode('utf8')
    21 '总用量 4
    -rwxrwxrwx. 1 root root 334 11月 21 09:02 test.py
    '
    View Code

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

    subprocess.check_output(['chmod', '+x', filepath])
    subprocess.check_output(['dos2unix', filepath])
  • 相关阅读:
    Spider爬虫清洗数据(re方法)
    Python 操作 mongodb 数据库
    python操作mysql数据库
    BeautifulSoup高级应用 之 CSS selectors /CSS 选择器
    mongoDB在centos7上的安装
    CentOS7安装mongoDB数据库
    [洛谷P4602] CTSC2018 混合果汁
    [洛谷P2605] ZJOI2016 基站选址
    [CF1039D] You Are Given a Tree
    [CF1105E] Helping Hiaset
  • 原文地址:https://www.cnblogs.com/xinzaiyuan/p/12674101.html
Copyright © 2011-2022 走看看