1.文件读取的三部曲:打开 ---> 操作 ----> 关闭

r(默认参数):

-只能读,不能写

-读取文件不存在 会报错

FileNotFoundError: [Errno 2] No such file or directory: '/tmp/westos'

w(写)

-write only

-文件不存在的时候,会自动创建新的文件

-文件存在的时候,会清空文件内容并写入新的内容

a(追加):

-write only

-写:不会清空文件的内容,会在文件末尾追加

-写:文件不存在,不会报错,会创建新的文件并写入内容

r+

-r/w

-文件不存在,报错

-默认情况下,从文件指针所在位置开始写入

w+

-r/w

-文件不存在,不报错

-会清空文件内容

a+

-r/w

-文件不存在,不报错

-不会清空文件,在末尾追加

f = open('/tmp/westos3','w+') /tmp/westos3文件不存在,自动创建了文件并写入了信息

print(f)

print(f.tell()) 打印文件指针的位置 此时为0

f.write('111') 写入‘111’

print(f.tell()) 再次打印指针位置可以看到指针为3

f.close() 关闭文件

f = open('/tmp/redhat','a+') 不会清空文件,在末尾追加

print(f) 文件指针的位置开始为0

print(f.tell())

f.write('111') 文件执行5此后指针在15

print(f.tell())

f.close() 关闭文件

2.文件的操作

#1.打开文件

f = open('/tmp/westos','r')

#2.操作

print(f)

#读文件

#content = f.read()

#print(content)

#写文件

#告诉当前的文件指针所在的位置

#print(f.tell())

#f.write('westos')

#print(f.tell())

#f.write('redhat')

#print(f.tell())

#判断文件对象拥有的权限

print(f.readable()) 是否可读

print(f.writable()) 是否可写

print(f.tell()) 文件的指针

content = f.read() 把读取的内容指向content

print(content)

print(f.tell())

content1 = f.read()

print(content1)

#print(content)

3.关闭文件

f.close()

2.如果读取是 图片 音频 视频(非纯文本文件)

需要通过二进制的方式读取和写入

-读取纯文本

r r+ w w+ a a+ == rt rt+ wt wt+ at at+

-读取二进制文件

rb rb+ wb wb+ ab ab+

#读取二进制文件内容

f1 = open('hello.png',mode='rb') 只读模式

content = f1.read()

f1.close()

#写入要复制的文件的内容

f2 = open('lucky.jpg',mode='wb') 写入模式

f2.write(content)

f2.close()

复制hello.png并创建新的lucky.jpg

3.

默认情况下读取文件的内容 小的文件:直接用read读取即可

如果是一个大文件(文件大小>=内存大小) readline()

f = open('/tmp/passwd','rb+')

#按行读取

#print(f.readline())

#按字节读取

#print(f.read(3))

#读取文件内容,并返回一个列表,列表元素分别为文件的行内容

print(f.readlines())

#指针的移动

#print(f.tell())

#print(f.read(10))

#print(f.tell())

#f.seek(2,2)

seek:指针移动

第一个参数:偏移量 >0:代表向后移动 <0 代表向前移动

第二个参数:

0:移动指针到文件开头

1:当前位置

2:移动指针到末尾

#读取/tmp/passwd内容,返回一个列表,去掉后面的\n

f = open('/tmp/passwd')

print(list(map(lambda x:x.strip(),f.readlines())))

print([line.strip() for line in f.readlines()])

f.close()

#创建文件data.txt 文件共100000行,

#每行存放以一个1~100之间的整数

import random

f = open('data.txt','a+')

for i in range(100000):

f.write(str(random.randint(1,100)) + '\n')

#移动文件指针

f.seek(0,0)

print(f.read())

f.close()

4.

上下文管理器:打开文件,执行完with语句内容之后,自动关闭文件

with open('/tmp/passwd') as f:

print(f.read())

#将第一个文件的内容写道第二个文件中

with open('date.txt') as f1,open('data3.txt','w+') as f2:

f2.write(f1.read())

f2.seek(0,0)

print(f2.read())

练习:

生成100个MAC地址并写入文件中,MAC地址前6位(16进制)为01-AF-3B

01-AF-3B-xx-xx-xx

-xx

01-AF-3B-xx

-xx

01-AF-3B-xx-xx

-xx

01-AF-3B-xx-xx-xx

import string

import random

def create_mac():

MAC = '01-AF-3B'

#生成16进制的数

hex_num = string.hexdigits

for i in range(3):

从16进制字符串中随即选出两个数字来

#返回值是列表

n = random.sample(hex_num, 2)

#拼接列表中的内容,将小写的字母转换成大写的字母

sn = '-' + ''.join(n).upper()

MAC += sn

return MAC

#主函数:随即生成100个MAC地址

def main():

#以写的方式打开一个文件

with open('mac.txt', 'w') as f:

for i in range(100):

mac = create_mac()

print(mac)

#每生成一个MAC地址,存入文件

f.write(mac + '\n')

main()

#1. 生成一个大文件ips.txt,要求1200行,每行随机为172.25.254.0/24段的ip;

#2. 读取ips.txt文件统计这个文件中ip出现频率排前10的ip;

import random

def create_ip_file(filename):

ips = ['172.25.254.' + str(i) for i in range(0,255)]

print(ips)

with open(filename,'a+') as f:

for count in range(1200):

f.write(random.sample(ips,1)[0] + '\n')

#create_ip_file('ips.txt')

def sorted_ip(filename,count=10):

ips_dict = dict()

with open(filename) as f:

for ip in f:

if ip in ips_dict:

ips_dict[ip] += 1

else:

ips_dict[ip] = 1

sorted_ip = sorted(ips_dict.items(),

key= lambda x:x[1],reverse=True)[:count]

return sorted_ip

print(sorted_ip('ips.txt',20))

import random

f = open('/tmp/isp1.txt','w+') #以w+模式打开创建文件

for i in range(1200):

ip = '172.25.254.'

num = random.randint(0,255) #拼接172.25.254.(num)

f.write(ip+str(num)+'\n')

f.seek(0,0) #从指针最开始读取

s = {}

for i in f.readlines():

if i not in s :

s[i] = 1

else:

s[i] += 1

list = list(s.items())

list1 = sorted(list,key=lambda x:x[1],reverse=True)

print(list1[0:10])

f.close()#关闭文件

二。os模块

import os

1.返回操作系统类型 值为:posix 是linux操作系统

值为nt 是windows操作系统

print(os.name)

print('Linux' if os.name == 'posix' else 'Windows')

2.操作系统的详细信息

info = os.uname()

print(info)

print(info.sysname)

print(info.nodename)

3.系统的环境变量

print(os.environ)

通过key值获取环境变量对应的value值

print(os.environ.get('PATH'))

4.判断是否是绝对路径

print(os.path.isabs('/tmp/ffff'))

print(os.path.isabs('hello.jog'))

5.生成绝对路径

print(os.path.abspath('hello.png'))

print(os.path.join(os.path.abspath('.'),'hello.jpg'))

print(os.path.join('/home/kiosk','hello.jpg'))

6.获取目录或文件名

filename = '/home/dd/20190523/day06/hello.jpg'

print(os.path.basename(filename))

print(os.path.dirname(filename))

7.创建目录

mkdir mkdir -p

os.mkdir('img')

os.makedirs('img/file1/file2')

不能传归删除目录

os.rmdir('img')

8.创建文件 删除文件

os.mknod('00_ok.txt')

os.remove('00_ok.txt')

9.文件重命名

os.rename('data.txt','data1.txt

10.判断文件或目录是否存在

print(os.path.exists('ips.txtyyyy'))

11.分离后缀名和文件名

print(os.path.splitext('hello.jpg'))

12.将目录名和文件名分离

print(os.path.split('/tmp/hello/hello.jpg'))

苹果系统python读取文件_python中文件的读取与写入以及os模块相关推荐

  1. python的文件读取方式_python中文件读取方式

    指\u201CPython编程:从入口到实践\u201D和\u201CPython编程快速启动\u201D1.文件路径获取文件路径包括绝对路径和相对路径.绝对路径是指\u201CE: \\ \\\u2 ...

  2. c++ 读文件_python中文件的使用

    在程序运行时,数据时保存在内存的变量里.内存中的数据在程序结束后或关机后就会消失.如果想要在下次开机运行程序时还想使用同样的数据,就需要把数据存储在不易失的存储介质中,比如硬盘.u盘.不易失存储介质上 ...

  3. python如何获取文件_python 中文件的读取

    file 的三种基本操作模式: r:只读:w:只写:a:追加: rb:按照二进制位进行读取:wb:按照二进制位进行写:ab:按照二进制位进行追加: r+:读写模式,光标默认在0位置,最后位置开始写 w ...

  4. python 二进制流_Python中对字节流/二进制流的操作:struct模块简易使用教程

    前言 前段时间使用Python解析IDX文件格式的MNIST数据集,需要对二进制文件进行读取操作,其中我使用的是struct模块.查了网上挺多教程都写的挺好的,不过对新手不是很友好,所以我重新整理了一 ...

  5. python中按照文件夹中文件的排列顺序读取文件内容,python文件显示和windows目录显示一致

    原创 python中按照文件夹中文件的排列顺序读取文件内容 2018-12-06 11:49:18 途径北海道 阅读数 3891 更多 分类专栏: python 版权声明:本文为博主原创文章,遵循 C ...

  6. python读取文件夹-Python按顺序读取文件夹中文件

    参考资料: 涉及到文件操作,我们有时候会读取一个文件夹中的所有的文件.这些文件可能是文件名完全混乱的,也可能是完全格式化的(如1.png,2.png...).下面介绍Python中的几种按顺序(假如有 ...

  7. 解决springboot读取jar包中文件的问题

    解决springboot读取jar包中文件的问题 参考文章: (1)解决springboot读取jar包中文件的问题 (2)https://www.cnblogs.com/songxiaotong/p ...

  8. QListWidget读取本地文件夹中文件并显示名字,双击读取xml数据

    文章目录 前言 一.读取本地文件并显示 二.双击读取数据 前言 本文主要是为了解决QListWidget读取本地文件夹中文件,并且显示的问题.然后双击读取其中xml数据 一.读取本地文件并显示 如下的 ...

  9. 合并文件夹中子目录_01 Linux之统计文件夹中文件个数以及目录个数

    案例分析: 今天遇到了一个需要统计路径下目录个数的问题 如果一个一个的去数会很麻烦,找到了一篇文章刚好提到这个,于是我将方法整理了一下. 该方法的链接: Linux统计文件夹中文件个数以及目录个数_S ...

最新文章

  1. 一文读懂机器学习“数据中毒”
  2. python新特性赋值_变量与赋值_Python入门视频课程_Python视频-51CTO学院
  3. LA3942 Remember the Word(Trie+DP)
  4. 2021-01-07 matlab数值分析  插值法 拉格朗日插值法 牛顿插值法
  5. 学生上课睡觉班主任怎么处理_【师问师答】学生上课说话,点名批评还嘴怎么办?...
  6. js 获取 当天凌晨时间
  7. 美国科学院公布新一批院士名单,中科院曹晓风及五名华裔教授当选
  8. CentOS 7.4系统安装配置图解教程
  9. 2018百度之星程序设计大赛 - 资格赛 P1006三原色图(MST,并查集)
  10. pb数据窗口显示图片_AkShare股票数据A股市净率
  11. SpringBoot整合jsp技术
  12. OkHttp中的设计模式之一:Builder模式
  13. Quartus prime工程中各种文件的后缀及意义
  14. matlab共轭梯度法解线性方程组,计算方法——共轭梯度法求解线性方程组.pdf
  15. opendevops_codo项目研究
  16. React + Koa2打造『官方管理后台』10 总结
  17. 计算机怎么连不上打印机,电脑和打印机连接不上怎么回事
  18. 电商订单模块的订单表与订单商品表关系,1个订单对应多个商品的页面布局,el表达式去掉重复的数据。
  19. 安卓APP源码和设计报告——仿淘宝水果商城
  20. 要命啦!Word中快速录入大全,内含快捷键小技巧,快来一起学习!

热门文章

  1. deeplearning.14深度学习猫咪识别阶段性检测记录
  2. java 实现ps功能_java 简单图片,可以实现ps的几个小滤镜
  3. 心若无尘,一花一世界,一鸟一天堂
  4. uniapp App更新解决方法
  5. AD18设计PCB时常见问题及操作
  6. 【Unity3D】基于模板测试和顶点膨胀的描边方法
  7. 【R言R语】算法工程师入职一年半的总结与感悟
  8. man手册,安装中文手册
  9. 防汛可视化:雨季来临,如何做好防汛措施?
  10. 两个图片叠加在一起css,css实现图片叠加的几种思路(记录笔记)