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

Posted 鑫仔园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 = rC: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])

 

以上是关于Python读写文件&is和==区别&常用模块的主要内容,如果未能解决你的问题,请参考以下文章

是否有任何用于搜索特定单词的 python 库,如 "the"、"is"、"was"、"am" .... 和其他类似单词

Python 读写文件中w与wt, r与rt的区别

Python开发第三篇:函数&读写文件

python 文件操作读写追加的区别

Python文件读写

python中open与with open的区别