*运维架构师-Python 自动化运维开发-021

十、文件操作

4、Python里的目录

所有文件都包含在各个不同的目录下,不过Python也能轻松处理。os模块有许多方法能帮你创建,删除和更改目录。

1、mkdir()方法

可以使用os模块的mkdir()方法在当前目录下创建新的目录们。你需要提供一个包含了要创建的目录名称的参数。

语法:

os.mkdir("newdir")

例子:

下例将在当前目录下创建一个新目录test。

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import os

# 创建目录test

os.mkdir("test")

2、chdir()方法

可以用chdir()方法来改变当前的目录。chdir()方法需要的一个参数是你想设成当前目录的目录名称。

语法:

os.chdir("newdir")

例子:

下例将进入"/home/newdir"目录。

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import os

# 将当前目录改为"/home/newdir"

os.chdir(r"/home/newdir")

3、getcwd()方法

getcwd()方法显示当前的工作目录。

语法:

os.getcwd()

例子:

下例给出当前目录:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import os

# 给出当前的目录

print os.getcwd()

4、rmdir()方法

rmdir()方法删除目录,目录名称以参数传递。

在删除这个目录之前,它的所有内容应该先被清除。

语法:

os.rmdir('dirname')

例子:

以下是删除" /tmp/test"目录的例子。目录的完全合规的名称必须被给出,否则会在当前目录下搜索该目录。

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import os

# 删除”/tmp/test”目录

os.rmdir( r"/tmp/test" )

5、文件具体操作(附加练习)

f = open('小重山') #打开文件

data1=f.read() #获取文件内容

data2=f.read() #获取文件内容

print(data1)

print('...',data2)

data=f.read(5) #获取文件内容

data=f.readline()

data=f.readline()

print(f.__iter__().__next__())

for i in range(5):

print(f.readline())

data=f.readlines()

for line in f.readlines():

print(line)

# 问题来了:打印所有行,另外第3行后面加上:'end 3'

for index,line in enumerate(f.readlines()):

if index==2:

line=''.join([line.strip(),'end 3'])

print(line.strip())

#切记:以后我们一定都用下面这种

count=0

for line in f:

if count==3:

line=''.join([line.strip(),'end 3'])

print(line.strip())

count+=1

print(f.tell())

print(f.readline())

print(f.tell()) #tell对于英文字符就是占一个,中文字符占三个,区分与read()的不同.

print(f.read(5)) #一个中文占三个字符

print(f.tell())

f.seek(0)

print(f.read(6)) #read后不管是中文字符还是英文字符,都统一算一个单位,read(6),此刻就读了6个中文字符

# terminal上操作:

f = open('小重山2','w')

f.write('hello\n')

f.flush()

f.write('world')

# 应用:进度条

import time,sys

for i in range(30):

sys.stdout.write("*")

sys.stdout.flush()

time.sleep(0.1)

f = open('小重山2','w')

f.truncate() #全部截断

f.truncate(5) #全部截断

print(f.isatty())

print(f.seekable())

print(f.readable())

f.close() #关闭文件

接下来我们继续扩展文件模式:

f = open('小重山2','w') #打开文件

f = open('小重山2','a') #打开文件

f.write('莫等闲1\n')

f.write('白了少年头2\n')

f.write('空悲切!3')

f.close()

#r+,w+模式

f = open('小重山2','r+') #以读写模式打开文件

print(f.read(5))#可读

f.write('hello')

print('------')

print(f.read())

f = open('小重山2','w+') #以写读模式打开文件

print(f.read(5)) #什么都没有,因为先格式化了文本

f.write('hello alex')

print(f.read()) #还是read不到

f.seek(0)

print(f.read())

#w+与a+的区别在于是否在开始覆盖整个文件

# ok,重点来了,我要给文本第三行后面加一行内容:'hello 岳飞!'

# 有同学说,前面不是做过修改了吗? 大哥,刚才是修改内容后print,现在是对文件进行修改!!!

f = open('小重山2','r+') #以写读模式打开文件

f.readline()

f.readline()

f.readline()

print(f.tell())

f.write('hello 岳飞')

f.close()

# 和想的不一样,不管事!那涉及到文件修改怎么办呢?

f_read = open('小重山','r') #以写读模式打开文件

f_write = open('小重山_back','w') #以写读模式打开文件

count=0

for line in f_read:

if count==3:

f_write.write('hello,岳飞\n')

else:

f_write.write(line)

another way:

if count==3:

line='hello,岳飞2\n'

f_write.write(line)

count+=1

#二进制模式

f = open('小重山2','wb') #以二进制的形式读文件

f = open('小重山2','wb') #以二进制的形式写文件

f.write('hello alvin!'.encode())#b'hello alvin!'就是一个二进制格式的数据,只是为了观看,没有显示成010101的形式

注意1: 无论是py2还是py3,在r+模式下都可以等量字节替换,但没有任何意义的!

注意2:有同学在这里会用readlines得到内容列表,再通过索引对相应内容进行修改,最后将列表重新写会该文件。这种思路有一个很大的问题,数据若很大,你的内存会受不了的,而我们的方式则可以通过迭代器来优化这个过程。

6、补充:rb模式以及seek (附加练习)

在py2中:

#昨夜寒蛩不住鸣.

f = open('test','r',) #以写读模式打开文件

f.read(3)

f.seek(3)

print f.read(3)

f.seek(3,1)

print f.read(3)

f.seek(-4,2)

print f.read(3)

在py3中:

# test:

昨夜寒蛩不住鸣.

f = open('test','rb',) #以写读模式打开文件

f.read(3)

f.seek(3)

print(f.read(3))

b'\xe5\xa4\x9c'

f.seek(3,1)

print(f.read(3))

b'\xe5\xaf\x92'

f.seek(-4,2)

print(f.read(3))

b'\xe9\xb8\xa3'

# 总结: 在py3中,如果你想要字符数据,即用于观看的,则用r模式,这样我f.read到的数据是一个经过decode的

# unicode数据; 但是如果这个数据我并不需要看,而只是用于传输,比如文件上传,那么我并不需要decode

# 直接传送bytes就好了,所以这个时候用rb模式.

# 在py3中,有一条严格的线区分着bytes和unicode,比如seek的用法,在py2和py3里都是一个个字节的seek,

# 但在py3里你就必须声明好了f的类型是rb,不允许再模糊.

# 建议: 以后再读写文件的时候直接用rb模式,需要decode的时候仔显示地去解码.

python有架构师吗_运维架构师-Python 自动化运维开发-021相关推荐

  1. 运维技能定级标准第4篇——关于运维工程师岗位的自动化运维与运维开发技能级别设计

    运维工程师岗位工作技能的评定类别(5)和(6) 5.自动化运维技术 级别0,什么都不懂 级别1,了解ansible.saltstack.puppet等主流的自动化运维管理技术工具,掌握公司主要使用的一 ...

  2. python 架构师课程_想做架构师应该怎么学习?

    阅读本文大概需要 5分钟. 昨天写的一篇,关于架构师是做什么的文章,之后就有读者在后台问起,说要想成为架构师要具备那些方面的知识,那今天就让我们一起来扒一扒. 曾经有这么个段子:甲:我已经应聘到一家中 ...

  3. 黑马程序员 python 基础版 哪个老师_(看黑马程序员Python基础班视频挺好,犹豫该不该报班?)...

    看黑马程序员Python基础班视频挺好,犹豫该不该报班? 如果看视频比较好的话,还是建议自学吧,毕竟录制视频的老师不一定参与实质的讲课,且能自学也省一笔培训费用了.我是看的bilibili上黑马程序员 ...

  4. python快速编辑入门答案_太惨!学Python方法用错,直接从入门到放弃!

    原标题:太惨!学Python方法用错,直接从入门到放弃! 从你开始学习编程的那一刻起,就注定了以后所要走的路-从编程学习者开始,依次经历实习生.程序员.软件工程师.架构师.CTO等职位的磨砺:当你站在 ...

  5. python 结构体数组 定义_一篇文章弄懂Python中所有数组数据类型

    前言 数组类型是各种编程语言中基本的数组结构了,本文来盘点下Python中各种"数组"类型的实现. list tuple array.array str bytes bytearr ...

  6. python如何学的扎实_如何系统的学习python?

    Google的人机大战,人们一夜之间都知道了AlphaGo,而由此也使得Python成为了人工智能开发中的热门语言,于是越来越多的人开始学习Python,甚至连幼儿园.小学都将Python纳入了学习课 ...

  7. python网络编程好学吗_年薪30万+的python编程难不难?好学吗?

    首先先了解下派森?什么是Python? python翻译成中文就是蟒;蚺蛇的意思.在计算机专业里面Python是一门课程,专门学习计算机编程的课程,是一种跨平台的计算机程序设计语言.一种高级,热门的编 ...

  8. python哪些城市好就业_目前最全的python的就业方向

    Python是一门面向对象的编程语言,编译速度超快,从诞生到现在已经25个年头了.它具有丰富和强大的库,常被称为"胶水语言",能够把用其他语言编写的各种模块(尤其是C/C++)很轻 ...

  9. python语言的就业方向_目前最全的Python语言的就业方向

    本文主要向大家介绍了目前最全的Python语言的就业方向,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. Python是一门面向对象的编程语言,编译速度超快,从诞生到现在已经25个 ...

  10. 运维转型之路—手工运维到无人值守的自动化运维,从根本实现降本增效

    运维伴随信息技术的发展而生,经历了从手工管理到工具化运维,发展至平台化运维,最终实现自动化.智能化运维的四个阶段. 图一:运维发展阶段及特点 在信息化发展初期,业务流量不大,服务器数量相对较少,系统复 ...

最新文章

  1. 网上整理的jQuery插件开发教程
  2. TypeScript里get属性的实现
  3. Upload-labs闯关
  4. 哈希表(HashTable),哈希冲突的避免、解决
  5. php将汉字转换为拼音和得到词语首字母(一)
  6. next主题设定代码高亮格式
  7. [Django学习]上传图片
  8. 关于Selenium2Library库导入PyCharm无法自动感知关键字的解决方法
  9. java毕业生设计大学生旅游拼团网站计算机源码+系统+mysql+调试部署+lw
  10. 酷派android sdk,酷派彩客易SDK配置说明
  11. Micro USB 引脚定义及OTG (USB-HOST) 接线
  12. Linux修改open files数及ulimit和file-max的区别
  13. 2021道路运输企业主要负责人安全考核试题
  14. SCI、EI、ISTP国际三大检索分别指的是什么?
  15. ubuntu 下安装flash player
  16. 【174期】华为OD(外包)社招技术二面,总结复盘
  17. 几行Python代码帮你生成精美词云图
  18. Oracle 更改字段的部分值
  19. unity3d摄像机跟随物体移动的简单方法
  20. c语言头文件格式图片_请高手赐教C语言图片文件头文件格式的解释,该怎么处理...

热门文章

  1. springcloud整合Gateway
  2. 基于ROS1.0的stdr simulation搭建多移动机器人(multiple robots)仿真系统
  3. 徐辉 北大计算机,徐辉的痛苦回忆_徐辉经历的那一段痛苦回忆
  4. Spring/SpringBoot 过滤器修改、获取http 请求request中的参数 和 response返回值,比如修改请求体和响应体的字符编码
  5. Linux命令教程第三期
  6. 操作系统中磁盘调度算法详解
  7. 图片编辑软件_pinta在Linux下安装
  8. HTML网页设计:CSS渐变、过渡
  9. ASP.NET Core 高级(一)【.NET 的开放 Web 接口 (OWIN)】
  10. ArcGIS 实验理论基础十五 空间查询