现在工作上主要用的语言是java,java在企业级的应用上能够发挥很好的用途,但有时候要做一个小功能时,比如批量更新文件,抓取网页等,这时候用java就显得太笨重了。因此就学习了python这门脚本语言。

这篇随笔主要是讲述python怎么处理文本文件,顺便巩固下python的一些基本知识。

好了,开始吧......

需求阐述

  • 处理文本文件:读一个本地文件,逐行处理

说到处理文件,不得不说下python的内置函数 open

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

函数定义:打开一个文件,并返回相应的文件Object,如果指定的文件不能打开,那么 OSError 将会抛出

其中,file参数表示需要打开的文件名称,

mode是打开模式,

buffering用来控制文件的缓冲,默认值为0,表示不缓冲,设置为1就会有缓冲,

encoding 为文件编码,默认为系统编码,

errors 是一个可选参数,用来指定当文件在编码和解码过程中发生错误将怎么处理,注意,这个错误处理不会应用在mode为二进制的模式('b')中,

newline 用来控制通用换行符的工作模式(只工作在文本模式中)

mode模式可以有以下几种:

字符 意义
'r' 以只读方式打开 (default)
'w' 以写方式打开,首先会删掉文件内容
'x' 当文件已存在时,已独占方式打开
'a' 以写方式打开,当文件存在时,会在内容末尾添加内容
'b' 二进制
't' 文本模式 (default)
'+' 更新一个磁盘文件 (reading and writing)
'U' universal newlines mode (已废弃)

一般情况下,使用open()函数时只需要调入文件名参数,而不添加其它任何参数,就可以获取文件内容。默认的模式是读模式,如果读取特殊文件(例如视频或者图片文件),那么必须使用‘b’模式。

下面是处理文本的一个例子展示:

 # encoding=utf-8
file_path = "d:/test.txt"
file = open(file_path) #####1. read()##### print(file.read()) #####2. readline()##### line = file.readline()
while line:
print(line)
line = file.readline() #####2. readlines()##### for line in file.readlines():
print(line) 20 file.close()

上面列出来3种读取file的方式: read()、 readline()、 readlines()

  • readlines最常用的一种方式,会把文件的每行内容转换成一个list,然后就可以进行各种操作
  • read: 表示一次性返回文件的全部内容
  • readline:返回文件的一行内容,下次调用时会继续读下一行,直到读取完

ok,处理文件的例子就到这!

【程序员技术练级】学习一门脚本语言 python(一)文件处理的更多相关文章

  1. 【程序员技术练级】学习一门脚本语言 python(三)跟数据库打交道

    接着上一篇,该篇讲述使用python对数据库进行基本的CRUD操作,这边以sqlite3为例子,进行说明.sqlite3 是一个非常轻型的数据库,安装和使用它是非常简单的,这边就不进行讲述了. 在py ...

  2. 【程序员技术练级】学习一门脚本语言 python(二)遍历本地文件系统

    这篇将讲述怎么使用python来遍历本地文件系统,并把文件按文件大小从小到大排序的一个小例子 在这个例子中,主要会用到python内置的和OS模块的几个函数: os.walk() : 该方法用来遍历指 ...

  3. 【程序员技术练级】熟悉Unix/Linux Shell和常见的命令行(一)文件系统结构和基本操作

    作为程序猿,熟悉一些unix/linux命令行是非常必要的,因为部署服务的服务器现在基本上用的都是unix/linux系统,很少在windows上部署服务的. 今天我们就介绍一些在linux上的文件系 ...

  4. 每个程序员都应该学习使用Python或Ruby

    每个程序员都应该学习使用Python或Ruby 如果你是个学生,你应该会C,C++和Java.还会一些VB,或C#/.NET.多少你还可能开发过一些Web网页,你知道一些HTML,CSS和JavaSc ...

  5. 程序员带你学习安卓开发-XML文档的创建与解析

    这是程序员带你学习安卓开发系列教程.本文章致力于面向对象程序员可以快速学习开发安卓技术. 上篇文章:程序员带你学习安卓开发系列-Android文件存储 因知识连贯性推荐关注头条号:做全栈攻城狮.从头开 ...

  6. 程序员带你学习安卓开发系列-Android文件存储

    这是程序员带你学习安卓开发系列教程.本文章致力于面向对象程序员可以快速学习开发安卓技术. 上篇文章:.Net程序员快速学习安卓开发-布局和点击事件的写法 主要讲解了布局和点击事件的写法. 上篇文章补充 ...

  7. 程序员带你学习安卓开发,十天快速入-对比C#学习java语法

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  8. 好程序员技术分享html5和JavaScript的区别

    好程序员技术分享html5和JavaScript的区别,HTML5广义上讲是前端开发学科的代名词,包含HTML5.CSS3及JavaScript三个重要的部分,是运行在浏览器上应用的统称.如PC端网站 ...

  9. [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …

    [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Pyth ...

随机推荐

  1. 301 MovedPermanently 重定向

    页面永久性移走(301重定向)是一种非常重要的“自动转向”技术. 301重定向可促进搜索引擎优化效果 从搜索引擎优化角度出发,301重定向是网址重定向最为可行的一种办法.当网站的域名发生变更后,搜索引 ...

  2. C#7.0连接MySQL8.0数据库的小笔记

    1.要连接MySql数据库必须首先下载MySql官方的连接.net的文件,文件下载地址为https://dev.mysql.com/downloads/connector/net/6.6.html#d ...

  3. 将.net core 发布到Linux上的一些坑

    目前遇到的,之后遇到再加 1.时间格式要用.ToString("yyyy-MM-dd HH:mm:ss"); 2.文件路径要用Path.Combine(),IHostingEnvi ...

  4. Kotlin 函数和函数表达式

    学习了kotlin 的控制. 其中最为强大的是各种控制可以直接作为表达式来使用. 那么在kotlin中,函数也是可以作为表达式来使用. 而且kotlin中函数的创建方式有很多方式. 第一种: 传统创建 ...

  5. this、static、main方法、静态代码块、final关键字、Runtime类、Cloneable类、类成员的访问控制权限、异常体系

    this表示当前对象,用在方法内部,当某对象调用该方法时,该方法中的this就代表调用该方法的对象: static关键字: 修饰类属性后,该属性就成为该类所有实例的公共属性,修改该属性值,所有的实例的 ...

  6. CHOCBase

    1.基础常用知识点 1.1 监听某个对象变化的四种方式 代理监听Delegate Notification通知 KVO键值监听 Block代码块 addTarget方法 1.2 音频视频相册等 2.常 ...

  7. django中ImageField模块使用

    https://blog.csdn.net/meylovezn/article/details/47124923

  8. 趣图:TCP 与 UDP 的差别

      趣图:程序猿和运维狗的工作日常…… 趣图:Java 和 PHP 之间的战斗

  9. April Fools Day Contest 2019 A. Thanos Sort

    A. Thanos Sort time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  10. vSphere 安装操作系统

    0.找到 vSphere Client 安装文件并安装 1.创建完成EXSI.Openfiler - 磁盘创建 * - 网卡设置 2.openfiler LVM 3.EXSI of ISCSI 4.s ...