文件和异常(一)

通过处理文件,可以让程序快速的分析大量的数据;

1,从文件中读取数据

#!/usr/bin/env python

#filename = read_pi.py

with open(‘pi.txt‘) as file_object:

    contents = file_object.read()

    print(contents)

这段代码的核心在第一行:

1,函数open() 打开文件

对文件做任何操作的之前,首先必须打开文件

在open()函数中指定文件名代表在当前目录寻找此文件,如果当前目录没有次文件会报错

[[email protected] Alben-PY]# mv pi.txt pi_10.txt
[[email protected] Alben-PY]# ./read_pi.py
Traceback (most recent call last):
File "./read_pi.py", line 4, in <module>
with open(‘pi.txt‘) as file_object:
FileNotFoundError: [Errno 2] No such file or directory: ‘pi.txt‘

2,关键字 “with”

函数open()的对应函数close()是指关闭文件,如果这样调用的话,在程序运行过程中如果遇到bug,导致close()未执行,

导致文件不会关闭。未妥地关闭文件可能导致数据丢失或者受损。如果在程序中过早的调用close(),则可能导致需要再次

使用文件时,文件已经关闭。

 使用“with”让python自动判断何时需要关闭文件。

第二行,对打开的文件使用read()函数,读取的内容存放在变量 contents中。

读取的效果:

[[email protected] Alben-PY]# ./read_pi.py
3.141592
65358979
32384626
43383279

[[email protected] Alben-PY]#

源文件:

[[email protected] Alben-PY]# cat pi.txt
3.141592
65358979
32384626
43383279
[[email protected] Alben-PY]#

可以发现末尾多了一行空行!

why?
 因为read()到达文件尾部后会返回一个空字串,而将这个空字符串显示出来就是一个空行。

如何删除:

with open(‘pi.txt‘) as file_object:
contents = file_object.read()
print(contents.rstrip())

效果:

[[email protected] Alben-PY]# ./read_pi.py
3.141592
65358979
32384626
43383279
[[email protected] Alben-PY]#

2、文件路径

读取文件的时候,如果文件不在当前目录下,需要制定路径

例如:

在/tmp下有一个文件,test1.txt

[[email protected] Alben-PY]# cat /tmp/test1.txt
this is test file
please read thie file with python!

如何读取此文件——

#!/usr/bin/env python

#filename = tmp_file.py

 

with open(‘/tmp/test1.txt‘) as file_object:

    file_content = file_object.read()

    print(file_content.rstrip())

这里的文件路径,可以用绝对路径,也可以用相对路径(linux文件路径基础有解释绝对与相对)

note:如果是windows的话,目录分隔符是“\”。

3、逐行读取:

需要查找文件特定内容的时候,就需要一行一行遍历文件,对文件逐行读取需要使用for循环

例如,逐行读取/etc/passwd文件

#!/usr/bin/env python

#filename etc_passwd.py  

filename = ‘/etc/passwd‘   把文件路径定义到变量 filename

with open(filename) as file_object:

    for line in file_object:    对打开的文件进行for循环

        print(line)

        if ‘halt‘ in line:        当读取到的行中含有字符“halt”时,

            break                  中断循环

效果:

[[email protected] Alben-PY]# ./etc_passwd.py
root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

[[email protected] Alben-PY]#

也会带有很多空格,使用相同的方法进行去除空格:

with open(filename) as file_object:

    for line in file_object:

        print(line.rstrip())

        if ‘halt‘ in line:

            break

4、读取内容到列表

使用‘with’时,open()返回的文件对象旨在with代码内可用,如果需要在with代码块外访问文件的内容,

可在with代码块内讲文件的各行储存在一个列表中。

例如:

with open(‘pi.txt‘) as file_object:

    pi_list = file_object.readlines()

   

print(pi_list)

[[email protected] Alben-PY]# ./list_pi.py
[‘3.141592\n‘, ‘65358979\n‘, ‘32384626\n‘, ‘43383279\n‘]

解读:

因为readlines()读取文件的时候把文件夹末尾的换行符也读取进来了,所以生成的表格会带有\n。

处理这个列表:

pi_string = ‘‘

for line in pi_list:

    pi_string += line.rstrip()

print(pi_string)

print(len(pi_string))

在第一行,我们定义了一个空字符串 pi_string

第二行使用for循环遍历这个列表,

第三行把每一行去除结尾换行符后的内容添加到变量pi_string中

最后打印变量 pi_string,同时计算len

时间: 2024-12-15 06:55:04

文件和异常(一)的相关文章

Android学习——R文件丢失异常原因汇总

Console报错:R.java was modified manually! Reverting to generated version! 引言: R文件丢失异常在java开发中是个比较常见的异常,造成这个异常的原因可能非常微小,但是给Android开发者们造成的麻烦可是巨大的,当程序员们费尽千辛万苦,找到自己错在哪里的时候,绝对会对自己的粗心大意而捶胸顿足,哀叹不已. 异常提示: R.java was modified manually! Reverting to generated ve

R文件丢失异常原因汇总

引言: R文件丢失异常在java开发中是个比较常见的异常,造成这个异常的原因可能非常微小,但是给Android开发者们造成的麻烦可是巨大的,当程序员们费尽千辛万苦,找到自己错在哪里的时候,绝对会对自己的粗心大意而捶胸顿足,哀叹不已. 异常提示: R.java was modified manually! Reverting to generated version! 或者项目中gen目录下没有生成R文件,运行项目的时候会报错 我的错误: 最近一次我出现这个错误是因为新电脑中的Eclipse中指向

萌新向Python数据分析及数据挖掘 第一章 Python基础 第十节 文件和异常

第一章 Python基础 第十节 文件和异常 从文件中读取数据 读取文件.文件路径   1 filename = 'pi_digits.txt' #文件名取个代号 2 #读取整个文件 3 with open(filename) as file_object: 4 contents = file_object.read()# 给内容取个代号 5 print(contents.rstrip()) 6 #逐行读取 7 with open(filename) as file_object: 8 for

文件与异常

到目前为止已经了解了如何处理数据,显示数据那么如何向程序传入数据 创建文件夹HeadFirstPython/chapter3 下载演示文件 wget http://python.itcarlow.ie/chapter3/sketch.txt 内容如下 Man: Is this the right room for an argument?Other Man: I've told you once.Man: No you haven't!Other Man: Yes I have.Man: Whe

第 10 章 文件和异常

至此,我们掌握了编写组织有序而易于使用的程序所需的基本技能,该考虑让程序目标更明确,用途更大了.在本章中,我们将学习处理文件,让程序能够快速地分析大量的数据:我们将学习错误处理,避免程序在面对意外情形时崩溃:我们将学习异常,它们是Python创建的特殊对象,用于管理程序运行时出现的错误:我们还将学习模块json,它让我们能够保存用户数据,以免在程序停止运行后丢失. 学习处理文件和保存数据可以让我们的程序使用起来更容易:用户将能够选择输入什么样的数据,以及在什么时候输入:用户使用我们的程序做一些工

第十章文件和异常

#1. #A:使用关键字with后,会在不需要访问文件后将其关闭 #B:open(),默认以"r"的形式打开文件,close()分别用于关闭文件 #C:读取文件的方法:read()默认读取整个文件,可以指定读取字节.readline()读取一行,readlines()按行读取后存入列表,当传入读取字节数目后,则读取的内容可能是行的一部分 #D:python3将文件当做一个可迭代的类型,此方法比较好 #E:seek()设置开始读的位置, tell()得到当前开始读取位置 #Test.tx

《Python编程从入门到实践》_第十章_文件和异常

读取整个文件 文件pi_digits.txt #文件pi_digits.txt 3.1415926535 8979323846 2643383279 下面的程序打开并读取整个文件,再将其内容显示到屏幕中: with open("pi_digits.txt") as fileobject: contents = fileobject.read() print(contents) #运行结果 3.1415926535 8979323846 2643383279 使用函数open()打开文件

Head First Python 第二章 函数模块&amp;第三章 文件与异常&amp;第四章 持久存储&amp;第五章 处理数据

第三章 1.共享模块 模块和发布工具箱全世界共享模块 编写函数,以.py为文件后缀名,第三方库都在PyPI *注释代码:三引号(单双都可以) 发布过程P40 使用发布工具,函数模块变成了一个“发布”,可以使用import导入其他程序 2.如果函数模块功能不满意 添加参数以供api选择比添加函数工作量小! 首先考虑BIF内置函数 ----------------------------------------------------------- 第四章 1.文件 open()语句,readlin

Head First Python学习笔记2——文件与异常

文件处理 1.用open()就可以打开文件,但是请注意:文件里有中文请设置编码,如 :open("filepath","r",encoding="utf-8")本书没有说明这个,结果我输出的都是乱码,在网上找了好久才发现解决方法.第二个参数是文件读写模式,详细请看下面  'r'       打开读取文件(默认)    'w'      打开写入文件,会先清除文件内容    'x'       创建一个新文件不打开写入    'a'       如

class 10 文件和异常

掌握了编写组织有序而易于使用的程序所需的基本技能,该考虑让程序目标更明确,用途更大.本章中,将学习处理文件,让程序能够快速地分析大量的数据:我们将学习错误处理,避免程序在面对意外情形时崩溃:我们将学习异常,它们是Python创建的特殊对象,用于管理程序运行时出现的错误:我们还将学习模块json,它让我们能够保存用户数据,以免在程序停止运行后丢失. 学习处理文件和保存数据可以让我们的程序使用起来更容易:用户将能够选择输入什么样的数据,以及在什么时候输入:用户使用我们的程序做一些工作后,可将程序关闭