当前位置:首页 >> 编程语言 >> 【python零基础入门学习】python基础篇之文件对象open、模块以及函数的使用(三),暴风转码2009

【python零基础入门学习】python基础篇之文件对象open、模块以及函数的使用(三),暴风转码2009

0evadmin 编程语言 1
文件名:【python零基础入门学习】python基础篇之文件对象open、模块以及函数的使用(三),暴风转码2009 【python零基础入门学习】python基础篇之文件对象open、模块以及函数的使用(三)

 本站以分享各种运维经验和运维所需要的技能为主

《python》:python零基础入门学习

《shell》:shell学习

《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战

《k8》暂未更新

《docker学习》暂未更新

《ceph学习》ceph日常问题解决分享

《日志收集》ELK+各种中间件

《运维日常》持续更新中

文件对象

操作步骤: 打开 ,  读写 , 关闭

open内建函数: 访问模式: # cp /etc/passwd /tmp/>>> f = open('/tmp/password')  -----默认r模式,文件不存在则报错Traceback (most recent call last):File "<stdin>", line 1, in <module>FileNotFoundError: [Errno 2] No such file or directory: '/tmp/password'>>> f = open('/tmp/passwd')>>> data = f.f.buffer          f.encoding        f.isatty(         f.newlines        f.readlines(      f.truncate(f.close(          f.errors          f.line_buffering  f.read(           f.seek(           f.writable(f.closed          f.fileno(         f.mode            f.readable(       f.seekable(       f.write(f.detach(         f.flush(          f.name            f.readline(       f.tell(           f.writelines(>>> data = f.read() >>> data>>> data = f.read() 文件指针已到结尾,再读取将为空串-----指针没有回头草>>> data'' >>> f.close()>>> f = open('/tmp/passwd')>>> data = f.read()>>> data>>> f.read(4)---读取4字节'root'>>> f.read(6)---继续往后读6字节':x:0:0'>>> f.readline()读到换行符\n结束 ----类型是 str  字符类型>>> f.readlines()--# 把每一行数据读出来放到列表中 ':root:/root:/bin/bash\n'>>> data = f.readlines()>>> type(data)<class 'list'>>>> data###############最常用的读取文件的方法#################f = open('/tmp/passwd')for line in f:print(line, end='')f.close()##############################f = open('图片地址', 'rb')  # 打开非文本文件要加参数bf.read(4096)f.close()[root@room9pc01 ~]# eog me1.png打开图片*************文本也可以用rb的方式打开*******#一个英文字符正好占一个字节,就用英文字符本身去显示但是一个汉子再utf9编码中占3字节,没有办法把一个字节表示成字符,所以就用16进制数表示# cat /tmp/a.txt hello一月份>>> f = open('/tmp/a.txt','rb')>>> f.read()b'hello\xe4\xb8\x80\xe6\x9c\x88\xe4\xbb\xbd\n'>>> s1 = b'\xe4\xb8\x80'>>> s1b'\xe4\xb8\x80'>>> s1.decode()'一'f.close()>>> s2 = '月'>>> s2.encode()b'\xe6\x9c\x88'*******************************************##################################f = open('/tmp/myfile', 'w')  # 'w'打开文件,如果文件不存在则创建f.write('hello world!\n')f.flush()  # 立即将缓存中的数据同步到磁盘f.writelines(['2nd line.\n', 'new line.\n'])f.close()  # 关闭文件的时候,数据保存到磁盘##############################with语句结束时,自动关闭文件with open('/tmp/passwd') as f:print(f.readline())#########################移动指针的位置以及查看指针的位置--f = open('/tmp/passwd', 'rb') ---一定要rbf = open('/tmp/passwd')f.tell()  # 查看文件指针的位置f.readline()f.tell()f.seek(0, 0)  # 第一个数字是偏移量,第2位是数字是相对位置。# 相对位置0表示开头,1表示当前,2表示结尾f.seek(-5,2)   #左为负   右为正f.tell()f.close() 拷贝文件: # f1 = open('/bin/ls', 'rb')# f2 = open('/tmp/list', 'wb')# # data = f1.read()# f2.write(data)# # f1.close()# f2.close()[root@room9pc01 tmp]# md5sum /bin/ls /tmp/list a78c13d806e594dc4014d145d689f23d  /bin/lsa78c13d806e594dc4014d145d689f23d  /tmp/listsrc_fname = '/bin/ls'dst_fname = '/tmp/list2'src_fobj = open(src_fname, 'rb')dst_fboj = open(dst_fname, 'wb')#就像商品供货的例子while 1:data = src_fobj.read(4096)if data == b'':#if len(data) == 0:#if not data : 空串(b'')为假,取反为真breakelse:dst_fboj.write(data)src_fobj.close()dst_fboj.close() 函数:

使用def定义

调用函数务必使用()

函数一般都需要有一个返回值

返回值使用return关键字指定

没有return默认返回None

>>> def add():...     result = 10 + 20... >>> a = add()>>> print(a)None------通过上面的例子可以知道,需要return返回值,不然只会默认输出None----###########函数############def mk_fib():fib = [0,1]  #函数内部的变量是局部变量,只能在函数内使用n = int(input('长度: '))for i in range(n - 2):fib.append(fib[-1] + fib[-2])return fib#返回的是fib代表的列表,而不是返回变量a = mk_fib()#调用函数时,必须用(),调用函数就是执行函数的代码print(a)b = [i * 2 for i in a]print(b)with open('/tmp/fib.txt', 'w') as fobj:# 需要把列表转成str字符串后再写入文件,否则报错fobj.write(str(a))############################# 函数参数:

传递参数:

def mk_fib(n):fib = [0,1]  #函数内部的变量是局部变量,只能在函数内使用for i in range(n - 2):fib.append(fib[-1] + fib[-2])return fib#返回的是fib代表的列表,而不是返回变量a = mk_fib(5)#调用函数时,必须用(),调用函数就是执行函数的代码print(a)b = [i * 2 for i in a]print(b)with open('/tmp/fib.txt', 'w') as fobj:# 需要把列表转成str字符串后再写入文件,否则报错fobj.write(str(a))n = int(input('长度: '))c = mk_fib(n)print(c) 位置参数: 

位置参数保存在sys模块的argv列表中

import sys

print(sys.argv)

# python3 01.py xixi haha 123

['01.py', 'xixi', 'haha', '123']

默认参数: ###默认参数###def pstar(num = 20):print('*' * num)pstar()pstar(50)  拷贝函数: import sysdef copy(src_fname, dst_fname):src_fobj = open(src_fname, 'rb')dst_fboj = open(dst_fname, 'wb')#就像商品供货的例子while 1:data = src_fobj.read(4096)if data == b'':#if len(data) == 0:#if not data : 空串(b'')为假,取反为真breakelse:dst_fboj.write(data)src_fobj.close()dst_fboj.close()copy(sys.argv[1],sys.argv[2])(nsd1907) [root@room9pc01 day03]# python 01.py /etc/fstab /tmp/cp.txt(nsd1907) [root@room9pc01 day03]# md5sum /etc/fstab /tmp/cp.txt 48ff680b643791cafc6d825ea978321f  /etc/fstab48ff680b643791cafc6d825ea978321f  /tmp/cp.txt 模块:

一个以.py结尾的python文件就是一个模块

文件代码的物理组织形式,模块是逻辑形式

将文件名的.py扩展名去除,得到的就是模块名

模块名也是一个名词,它也要满足相关的约定(首字符:字母下划线,后续字母数字下划线)

vim star.pyhi = 'hello shabichao'def pstar(n=30):print('*' * n)>>> import star>>> star.star.hi      star.pstar(  >>> star.hi'hello shabichao'>>> star.pstar()******************************>>> star.pstar(50)************************************************** 导入模块:  # import star   # 常用# print(star.hi)# star.pstar()# from random import choice, randint   # 常用# print(choice('abcd'))# print(randint(1, 100))# import sys, getpass   # 不常用import getpass as gp    # 导入模块时,给模块取别名,不常用upass = gp.getpass()print(upass) 模块特性: (nsd1907) [root@room9pc01 day03]# echo 'print(__name__)' > foo.py(nsd1907) [root@room9pc01 day03]# echo 'import foo' > bar.py(nsd1907) [root@room9pc01 day03]# cat foo.py print(_name_)(nsd1907) [root@room9pc01 day03]# cat bar.py import foo(nsd1907) [root@room9pc01 day03]# python3 foo.py __main__(nsd1907) [root@room9pc01 day03]# python3 bar.py foo#####################调用模块或者之后使用py脚本######################hi = 'hello shabichao'#全局变量之后才可以调用def pstar(n=30):print('*' * n)if __name__ == '__main__':print(hi)pstar()pstar(50) 生成随机密码:(作业)

def mk_pass(n=8):import stringimport randomresult = ''for i in range(1,n+1):#ms = str(random.choice(range(0,10)))inn = random.choice(range(0,94))all_str = string.printableresult +=  all_str[inn]return resultif __name__ == '__main__':print(mk_pass())print(mk_pass(4))print(mk_pass(10))方法二:from random import choiceimport stringall_str = string.printabledef mk_pass2(n=8):result = ''for i in range(n):ch = choice(all_str)result += chreturn resultif __name__ == '__main__':print(mk_pass2())print(mk_pass2(4))print(mk_pass2(10))
协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接