day08 python
 
一.文件操作
    1.文件操作的函数
        open(文件名, mode=模式, encoding=字符集)
 
    2.模式: r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b
        r: read()
f = open('num.py', mode='r', encoding='utf-8')
print(f.read(3))                #代表读 3 个字符, 单个英文是一个字符, 单个汉字也是一个字符
print(f.read())                 # 读, 所有, 大文件不行,要考虑到内存
f.close()
    
        r: readline()
f = open('num.py', mode='r', encoding='utf-8')
print(f.readline(),end='\n')             #一次读一行, 光标随之移动
print(f.readline(),end='\n')             #print()函数有个换行, 而且readline()也会把文本中的换行符读出来
print(f.readline().strip(),end='\n')     #去掉一个换行,去掉 readline()的, 原文中的空行打印不出来
print(f.readline(),end='')               #去掉一个换行, 去掉 print() 的
f.close()
    
        r: while
f = open('num.py', mode='r', encoding='utf-8')
while True:
    s = f.readline()
    if s != '':
        print(s,end='')
f.close()                                   #程序停在这, 一直等(文件有增加时, 会继续打印), 可做监控用
print('program is over')
    
        r: for
f = open('num.py', mode='r', encoding='utf-8')
for line in f:
    print(line,end='')                      #和raadline()一样, 一行一行读, 会把文本中的换行读出来
    
        r: 编码
f = open(r'C:\Users\THINKPAD\Desktop\bajie.txt', mode='r', encoding='gbk')      #当读window文件时(中国系统默认gbk)
print(f.read())                              #1. window文件路径用 r''
f.close()                                    #2. 有中文时,用什么编码,就用什么解码    # 无中文时无所谓
    
        w: write()
f = open('num.py', mode='w', encoding='utf-8')  #带w的(w, w+, w+b), 只要你操作了,就会先清空源文件
f.write('bajieaishuishui\n')                    #还有创建文件的功能: 当文件不存在时,就创建
f.write('bajieaishuishui\n')                    #一行一行写的时候, 和readline()一样, 要注意换行符的问题
f.flush()
f.close()
    
        a: write()
f = open('num.py', mode='a', encoding='utf-8')
f.write('bajieaishuishui\n')
f.close()
    
        rb, wb, ab:  b要和模式配合(b的意思是bytes), 处理的是非文本文件
f = open(r'C:\Users\THINKPAD\Desktop\tupian.jpg', mode='rb')    #处理的是二进制,用不了 encoding
e = open(r'C:\Users\THINKPAD\Desktop\tupiancp.jpg', mode='wb')
 
for line in f:
    print(len(line))        #一次读一行, 读了多少不固定, 不用管
    e.write(line)
 
f.close()
e.close()
    
        r+: 先读后写
r+ 依旧是最好用的读写同时存在的模式
f = open('num.py', mode='r+', encoding='utf-8')     #读写的顺序,
 
s = f.readline()                #r+ 模式(唯一和光标原则不相符的地方), 当你先读后写时, 不论你读了多少,写入时都在文件最后写
f.seek(3)                       #当然你可以强行改变光标的位置
f.write('八戒\n')
 
print(s)
f.close()
    
        r+: 先写后读
f = open('num.py', mode='r+', encoding='utf-8')
f.write('八戒')
s = f.read()                    #先写后读里面貌似也有问题, 先写的写到哪?
print(s)                        #按理说是写到开头, 但是你后面跟的读如果不是read()读全部, 那么他也是写到最后
f.close()
   
         w+: 基本不用, 因为遇到w就清空特性不好
f = open('num.py', mode='w+', encoding='utf-8')
 
f.write('八戒')           #写完之后, 光标在最后, 再读是没内容的
f.seek(0)                   #光标移到开头
s = f.read()
print(s)
 
f.close()
    
        a+: 不常用, 因为开始的时候光标就在末尾,麻烦
f = open('num.py', mode='a+', encoding='utf-8')
f.seek(0)
print(f.read())
 
f.close()
        r+b, w+b, a+b: 一个二进制的文件不太可能同时读写, 很少用
 
    3.常用的操作
        光标 seek()
f = open('num.py', mode='r', encoding='utf-8')
f.seek(0)                           #这里的数字代表的是字节 bytes, utf-8 的汉字要用 3 个
f.seek(0, 2)
print(f.read(1))                    #这里的数字代表的是字符
f.close()
 
#f.seek(offset,whence) # offset偏移量,用的是bytes 为单位; 正数:向前冲; 负数:没有  # whence 0:从开头 1:从当前 2:从末尾
        
        tell()
f = open('num.py', mode='r', encoding='utf-8')
 
f.seek(3)
print(f.tell())             #和f.seek()一样, 告诉你在哪个bytes 的位置
 
f.close()
       
        truncate() 截断
f = open('num.py', mode='w', encoding='utf-8')
 
f.write('八戒爱谁谁')
f.seek(6)
f.truncate()         #默认把光标之后的内容干掉; 如果给了参数 n , 则干掉 n 后面的
 
f.close()
 
二.文件的修改(比如字符串替换, 不支持直接改)
 
import os
 
with open('num.py', mode='r', encoding='utf-8') as f1, open('num.py.fuben', mode='w', encoding='utf-8') as f2:
    for line in f1:
        line = line.replace('爱','----*----')
        f2.write(line)                              #把改好的每行写到副本文件中
os.remove('num.py')                                 #把原来的文件删掉
os.rename('num.py.fuben','num.py')                  #把副本改名成原来的文件
 
三.简单日志处理
    日志格式及需求
1,八戒, 10086, sioon          #每一行搞成这样 {'id':'1','name':'bajie','phone':'10086','car':'sioon'}, 最后搞到一个列表里
2,悟空, 36600, stang
3,信息, 45890, itngl
    
    代码
ls = []
with open('num.py',mode='r',encoding='utf-8') as f:
    for line in f:
        dic = {}
        lst = line.strip().split(',')
        dic['id'] = lst[0]
        dic['name'] = lst[1]
        dic['phone'] = lst[2]
        dic['car'] = lst[3]
        ls.append(dic)
print(ls)
 
 
 
 
 
 
    练习: 
    求水仙花数
for num in range(100,1000):
    sum3 = 0
    num = str(num)
 
    for i in num:
        sum3 = sum3 + int(i)**3
 
    if sum3 == int(num):
        print('%s yes' % num)
    
    random模块
import random
 
print(random.randint(0,1))        #取随机数字, 可以猜到结尾
    
    搞7个随机数, 不重复
import random
 
s = set()                #利用集合的不重复的特性
 
while len(s) < 7:
    s.add(random.randint(1, 36))
 
print(s)
    
    两个变量的数据交换
a = 10
b = 5
 
a, b = b, a
 
print(a,b)
 
  
 
 
 
 
 
 

day08 python文件操作的更多相关文章

  1. Python基础篇【第2篇】: Python文件操作

    Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说 ...

  2. [Python学习笔记][第七章Python文件操作]

    2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...

  3. Python文件操作与函数目录

    文件操作 python文件操作 函数 Python函数学习——初步认识 Python函数学习——作用域与嵌套函数 Python函数学习——匿名函数 python内置函数 Python函数学习——递归 ...

  4. 初学Python——文件操作第二篇

    前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...

  5. day8.python文件操作

    打开和关闭文件 open函数 用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写. file = open(file_name [, access_ ...

  6. 关于python 文件操作os.fdopen(), os.close(), tempfile.mkstemp()

    嗯.最近在弄的东西也跟这个有关系,由于c基础渣渣.现在基本上都忘记得差不多的情况下,是需要花点功夫才能弄明白. 每个语言都有相关的文件操作. 今天在flask 的例子里看到这样一句话.拉开了文件操作折 ...

  7. Python之路Python文件操作

    Python之路Python文件操作 一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r&qu ...

  8. python 文件操作 r w a

    python基础-文件操作   一.文件操作 对文件操作的流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件       打开文件时,需要指定文件路径和以何等方式打开文件, ...

  9. Python:文件操作技巧(File operation)(转)

    Python:文件操作技巧(File operation) 读写文件 # ! /usr/bin/python #  -*- coding: utf8 -*- spath = " D:/dow ...

随机推荐

  1. ubuntu18.04 -- 创建第一个Django项目

    step1: 安装虚拟环境: sudo pip3 install virtualenv # 安装虚拟环境sudo pip3 install virtualenvwrapper # 安装虚拟环境扩展包# ...

  2. The Preliminary Contest for ICPC Asia Xuzhou 2019 I J

    I. query 题意:给出n的一个排列,有m个询问[l,r],询问[l,r]直接有倍数关系的pair个数. 解法:比赛完之后听说是原题,但是我没做过呀,做题太少了qwq.首先因为数字是1-n的,所以 ...

  3. Git--将已有的项目添加到github(转)

    转自:https://blog.csdn.net/north1989/article/details/53471439 1. 目标: 把本地已经存在的项目,推送到github服务端,实现共享. 2. ...

  4. 使用intellij的idea集成开发工具中的git插件(转)

    转自:https://blog.csdn.net/u012225679/article/details/71123171 注意:这里并没有介绍git客户端的安装,如果要安装客户端,大家可以参考如下的链 ...

  5. vue 项目中使用阿里巴巴矢量图标库iconfont

    原文:https://www.jianshu.com/p/38262f18eee2 1.打开iconfont阿里巴巴官网https://www.iconfont.cn 2.新建项目(这样方便后期维护图 ...

  6. JavaSE---System类

    1.概述 1.1 System类  代表当前java程序的运行平台: 1.2 System类  提供的类方法: getenv():获取系统所有的环境变量: getenv(String name):获取 ...

  7. 【Nginx】缓存配置

    1.如何配置基本缓存设置 开启简单的缓存配置,只需要两个指令:proxy_cache_path和proxy_cache.proxy_cache_path配置缓存的存放地址和其他的一些常用配置,prox ...

  8. html2canvas截图白边显示问题

    html2canvas(document.getElementById('resource_chart'),{ useCORS:true, logging:false, width:$('#resou ...

  9. <自动化测试>之<selenium API 用法2>

    不知道之前的selenium API 用法1,有没有去练习, 个人认为线性代码还是要靠敲的, 后面的模块化除了多敲还需要一定的编程思想去理解, 今天下午不是很忙就给来这儿补充点selenium api ...

  10. delphi 监控文件系统

    elphi 监控文件系统 你是否想为你的Windows加上一双眼睛,察看使用者在机器上所做的各种操作(例如建立.删除文件:改变文件或目录名字)呢? 这里介绍一种利用Windows未公开函数实现这个功能 ...