2.文件操作

  • 文件操作的过程:打开文件获得句柄——>操作文件行(遍历等)——>关闭文件

  • 打开文件获得句柄

      比较low的方法: f = open("file_path","r","encoding=utf-8") 操作完后要关闭文件 f.close

      高大上的方法:用完自动关闭

             with  open("file_path", "r" , "encoding=utf-8") as f1,

                open("file_path", "r" , "encoding=utf-8") as f2 :

       打开方式参数说明:

            r : 只能读,一行一行的读

            w:只能写,按顺序写,这个参数会创建一个新文件。切记

            a:追加,打开一个文件然后,只能从最后面开始写

            r+:这个读就是跟r一样,写就是跟a一样。前提是你不移动光标

            w+:这个要创建空白文件或覆盖一个同名旧文件。不移动光标读不出任何数据,但是移动光标是闲的蛋疼才去干的事

            a+:追加读。无论怎样移动光标,只能追加,但是不移动光标读不出来数据,也是个蛋疼的设计

            rb:以二进制格式去读文件,读bytes类型的二进制,或者视频等文件,如果你想看010100101100可以这么干

            wb:二进制写,写010110011010进去,传输bytes应该用得到

            rU:\r\n变成\n打开,Windows写的可以拿到Linux里面运行了,不过,请问谁会用Windows的记事本去写脚本?除非他觉得自己时间没地方花。

  • 操作文件

      读一下光标移动一下, 写一下光标移动一下,想象一下往记事本里写东西的感觉

     操作光标:f.tell() 当前光标所在的字符位置(按字符个数)。  f.seek(0) 光标回到起点  , f.seek(10)  光标移到第10个字符。

          我感觉我不太会去使用它,复杂的情况下,天知道你的光标会移动到哪里去了。。

     读  : f.readline() 读一行,注意是光标所在位置的那一行,第一行光标移动一行

        f.readlines() 把整个文件所有字符读进一个列表中,这个。。有可能把内存花光

         f.read()  把整个文件所有字符读进一个字符串中,这个。。有可能把内存花光

        f.read(5)  读从光标开始的5个字符,不过谁会去用它呢?

     写 : f.write(“balabalabalabala”) 写字符串,按顺序写

遍历: 1.  高大上,速度快的方法:                      

count = 0                                

for  line   in  f:  f是文件句柄,迭代器                          

   print(line)

   count += 1

遍历2.  把内存撑爆的方法:自己搞着玩可以

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

    print (index, line)

    其他的一些蛋疼的方法:

f.encoding 该文件的编码 f.fileno()该文件句柄编号,操作系统维护 f.isatty是不是终端设备文件
f.name  文件名字 f.seekable能不能移动指针 f.readable  可读?
f.writable  可写? f.closed 是否关闭 f.flush() 缓存满了刷新进硬盘,同步要求高可用
f.truncate()  干嘛用?需要查一下 f.truncate(10)  截断10个  a模式下  
  • 打印进度条

import  sys , time

for  i  in  range(20):

  sys.stdout.write(">")   标准输出.控制台

  sys.stdout.flush()

  time.sleep(0.1)

4.函数

定义

定义的时候可以有*args   **kwargs放在最后

def  fuc1(x):

  x += 1

  return x

传值:

关键字参数,位置参数,默认参数,参数组

关键字参数只能放位置参数后面,不知道搞个关键字参数有什么用?谁去用啊?对我来说我直接忽略

默认参数,可以指定,可以不指定,

tuple1 = (1,2,3,4,5,4)      # 内部按元祖处理 传参:*tuple1
list1 = [1,2,2,3,4,5] # 内部按元祖处理 传参:*list1
set1 = {1,2,3,4,5,6} # 内部按元祖处理 传参:*set1
dict1 = {"name":"alex","age":22} # 按字典处理 传参:**dict1

5.局部变量全局变量 | 递归 | 高阶函数

局部变量

局部变量: 函数中的形参,{}内的 ,for循环的i等  全局变量就不说了

可以在局部环境中修改全局变量。。。知道就行了。估计我在代码生涯中不会干这种事

递归:看个实例就好了,主要看一看语法,实际跟普通函数的定义是一样的

def  calc(n):

  if n != 0:

    print(n)

    return calc(int(n/2))

高阶函数:如果函数的参数也为函数,那它就是高阶函数

abs为求绝对值的函数

def  add( a, b, f):

  return  f(a) + f(b)

res = add(3, -6, abs)    输出结果res=9

杂文Python的更多相关文章

  1. 技术专题—Python黑客【优质内容聚合贴】

    作者:坏蛋链接:https://zhuanlan.zhihu.com/p/24645819来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 一.前言 本着知识分享,聚合优 ...

  2. Python多线程问题的资料查找与汇总

    Python多线程问题的资料查找与汇总 声明: 1)本报告由博客园bitpeach撰写,版权所有,免费转载,请注明出处,并请勿作商业用途. 2)若本文档内有侵权文字或图片等内容,请联系作者bitpea ...

  3. Python中的多进程与多线程(一)

    一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...

  4. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  5. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

  6. JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议

    软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...

  7. 可爱的豆子——使用Beans思想让Python代码更易维护

    title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...

  8. 使用Python保存屏幕截图(不使用PIL)

    起因 在极客学院讲授<使用Python编写远程控制程序>的课程中,涉及到查看被控制电脑屏幕截图的功能. 如果使用PIL,这个需求只需要三行代码: from PIL import Image ...

  9. Python编码记录

    字节流和字符串 当使用Python定义一个字符串时,实际会存储一个字节串: "abc"--[97][98][99] python2.x默认会把所有的字符串当做ASCII码来对待,但 ...

随机推荐

  1. Cordova 开发 App

    Cordova 是一个开源的移动开发框架.允许你用标准的 Web 技术——HTML5,CSS3 和 JavaScript 做跨平台开发.应用在每个平台的具体执行被封装了起来,并依靠符合标准的 API ...

  2. POJ1664 计数 DP

      题目传送门 http://poj.org/problem?id=1664 设$dp[i][j]$表示$i$个苹果放在$j$个盘子里的总数 $1.$ 当 苹果数 小于 盘子数 $(M < N) ...

  3. PDO连接mysql8.0报PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers错误

    安装mysql8.0之后,尝试使用php连接mysql,总是报PDO::__construct(): Server sent charset (255) unknown to the client. ...

  4. springAOP配置XML方式配置切面报错error at ::0 formal unbound in pointcut

    [错误配置文件] <aop:config> <aop:pointcut expression="execution(* net.fifteenho.service.impl ...

  5. kernel信息及其相关命令

    内核 linux内核是单内核体系设计.但充分借鉴了微内核设计体系的优点,为内核引入模块化机制 内核组成部分: kernel: 内核核心,一般为bzImage,通常在/boot 目录下,名称为vmlin ...

  6. bzoj4987: Tree(树形dp)

    Description 从前有棵树. 找出K个点A1,A2,…,Ak. 使得∑dis(AiAi+1),(1<=i<=K-1)最小.   Input 第一行两个正整数n,k,表示数的顶点数和 ...

  7. c#自定义ORM框架---(泛型&反射&实体类扩展属性<附带通用增、删、查、改>)

    该教材主要是运用到泛型.反射和实体类扩展属性 步骤一.建立扩展属性类 实体类扩展属性要继承Attribute基类完成 [AttributeUsage(AttributeTargets.Property ...

  8. 神奇的Object.defineProperty

    vue.js和avalon.js 都是通过它实现双向绑定的. 对象是由多个名/值对组成的无序的集合.对象中每个属性对应任意类型的值.定义对象可以使用构造函数或字面量的形式: var obj={}; o ...

  9. LR接口测试---Java Vuser之增删改查

    import lrapi.lr; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared ...

  10. Android Bitmap转换WebP图片导致损坏的分析及解决方案

    背景 作为移动领域所力推的图片格式,WebP图片在商业领域证明了其应有的价值.基于其他格式的横向对比,其在压缩性能表现,及还原度极为优秀,节省大量的带宽开销.基于可观的效益比,团队早前已开始磋商将当前 ...