赞
踩
感谢点赞和关注 ,每天进步一点点!加油!
目录
Python 系列文章学习记录:
Python系列之Windows环境安装配置_开着拖拉机回家的博客-CSDN博客
Python系列之变量和运算符_开着拖拉机回家的博客-CSDN博客
Python系列之判断和循环_开着拖拉机回家的博客-CSDN博客
Python系列之字符串和列表_开着拖拉机回家的博客-CSDN博客
Python系列之文件操作和函数_开着拖拉机回家的博客-CSDN博客
Python系列模块之标准库OS详解_开着拖拉机回家的博客-CSDN博客
Python系列模块之标准库re详解_开着拖拉机回家的博客-CSDN博客
Python系列模块之标准库json详解_开着拖拉机回家的博客-CSDN博客
Python系列模块之标准库shutil详解_开着拖拉机回家的博客-CSDN博客
shell里主要就是调用awk,sed命令来处理文件, 特别是sed命令可以使用sed -i命令直接操作文件的增,删,改。
python文件的操作就三个步骤:
Python 提供了必要的函数和方法进行默认情况下的文件基本操作。你可以用 file 对象做大部分的文件操作。
用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。
语法:
file object = open(file_name [, access_mode][, buffering])
各个参数的细节如下:
tell()方法告诉你文件内的当前位置, 换句话说,下一次的读写会发生在文件开头这么多字节之后。
seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。
如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。
示例:
- fo = open("/root/data02.txt")
- print("文件名: ", fo.name)
- print( "是否已关闭: ", fo.closed)
- print("访问模式: ", fo.mode)
- print("光标位置: ", fo.tell())
- print("移动光标: ", fo.seek(5))
执行结果:
访问模式 | 说明 |
==r== (read) | 只读模式,不能写(文件必须存在,不存在会报错) |
==w== (write) | 只写模式,不能读(文件存在则会被覆盖内容(要千万注意),文件不存在则创建) |
==a== (append) | 只追加模式,不能读 |
r+ | 读写模式 |
w+ | 写读模式 |
a+ | 追加读模式 |
rb | 二进制读模式 |
wb | 二进制写模式 |
ab | 二进制追加模式 |
rb+ | 二进制读写模式 |
wb+ | 二进制写读模式 |
ab+ | 二进制追加读模式 |
示例:
- # 打开文件
- f = open("/root/data.txt", "r")
- # 打印光标位置 从 0 开始
- print(f.tell())
- # 读取数据
- data = f.read()
- print(data)
- # 打印光标位置
- print(f.tell())
-
- # 光标移动到开始从第10位开始打印
- f.seek(10)
- print(f.tell()) # 打印光标位置
- data1 = f.read()
- print(data1) # 打印数据
-
- f.close

执行结果如下:
示例:对比read()、readline() 和readlines()
- f = open("/root/data02.txt", "r")
-
- f.seek(5) # 光标移到第6个字符那里
- data1 = f.read() # read是读整个文件在光标后面的所有字符(包括光标所在的那个字符),读完后,会把光标移到你读完的位置
-
- f.seek(5) # 光标重置到第6个字符那里
- data2 = f.readline() # readline是读光标所在这一行的在光标后面的所有字符(包括光标所在的那个字符),读完后,会把光标移到你读完的位置
-
- f.seek(5) # 光标重置到第6个字符那里
- data3 = f.readlines() # readlines和read类似,但把读的字符按行来区分做成了列表
-
- f.close()
- print(data1)
- print("+++++++++++++++++++++++")
- print(data2)
- print("+++++++++++++++++++++++")
- print(data3)

执行结果:
示例: 遍历文件读取文件某一行
- f = open("D:\\IPVA\Data_Traffic\\DataServerCloud01_GetCounters\\DataServerCloud01.Device.CounterArea.PointInfo"
- ".20230512122021.txt.COMPLETED", "r")
-
- for index, line in enumerate(f):
- if index == 1:
- print("+++++++++++++++++++++++++++++++++++++++++++++++++++++++")
- # 可以 line 转为字符串 对一行数据进行 处理
- print(index, line.strip())
-
- f.close()
执行结果:
示例:
- [root@devops IO]# cat fileW.py
-
- ## 文件不存在会创建,存在会清空
- f = open("/root/data01.txt","w")
-
- f.write("hello world\n")
-
- f.close
- [root@devops IO]# cat /root/data01.txt
- hello world
- [root@devops IO]#
执行结果:
多次执行会覆盖,且如果要读取文件 会抛出异常
示例:
- f = open("/root/data01.txt","a")
- f.write("hello world\n")
- f.close
执行结果:
小结:
示例:
- function start() { # 定义函数名start,前面可以加function也可以不加
- /usr/sbin/sshd
- }
-
- stop() {
- kill -15 `cat /var/run/sshd/sshd.pid`
- }
-
- reload() {
- kill -1 `cat /var/run/sshd/sshd.pid`
- }
-
- restart() {
- stop
- start # 函数里调函数就是函数的嵌套
- }
-
- case "$1" in
- start )
- start # 调用start函数
- ;;
- stop )
- stop
- ;;
- restart )
- restart
- ;;
- reload )
- reload
- ;;
- * )
- echo "参数错误"
- esac

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
你可以定义一个由自己想要功能的函数,以下是简单的规则:
语法:
- def funct1(): # 函数名(),括号里面可以写参数,也可以不写
- """函数说明或注释""" # 说明或注释可以不写,大型程序为了程序可读性最好写
- print("进水") # 函数代码主体
- print("洗衣服") # 函数代码主体
- print("脱水") # 函数代码主体
- return 0 # 函数返回值,可有可无
-
- funct1() # 调用函数的方式(调用函数也就是执行函数内部的代码)
执行结果:
可更改(mutable)与不可更改(immutable)对象
在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
python 函数的参数传递:
python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。
示例:
- def ChangeInt( a ):
- a = 10
-
- b = 2
- ChangeInt(b)
- print(b) # 结果是 2
示例:
- def changeme( mylist ):
- "修改传入的列表"
- mylist.append([1,2,3,4])
- print("函数内取值: ", mylist)
- return
-
- # 调用changeme函数
- mylist = [10,20,30]
- print("列表初始元素: ", mylist)
- changeme( mylist )
- print("函数外取值: ", mylist)
实例中传入函数的和在末尾添加新内容的对象用的是同一个引用,故输出结果如下:
以下是调用函数时可使用的正式参数类型:
- # 必备参数
- def printme( str ):
- "打印任何传入的字符串"
- print(str)
- return
-
- #调用printme函数,你必须传入一个参数
- printme("kangll")
-
- # 关键字参数
- def printme( name , age):
- "打印任何传入的字符串"
- print(name, str(age) )
- return
-
- #调用printme函数
- printme( age = 30, name = "My string")

执行结果:
示例:
- # 默认参数
- def ssh(ip, port = 22):
- print("ssh %s -p %s" % (ip, port))
-
- ssh("10.1.1.15")
- print("+++++++++++++++++++")
-
- # 不定长参数
- def printinfo( arg1, *vartuple ):
- "打印任何传入的参数"
- print("输出: ")
- print(arg1)
- for var in vartuple:
- print(var)
- return
-
- # 调用printinfo 函数
- printinfo( 10 )
- printinfo( 70, 60, 50 )

执行结果:
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。