【Python笔记】第二课(一):Python文件处理

说明:

主要是file()和open()函数的使用,但在查open()函数的帮助时,会有下面的说明:

>>> help(open)
……
Open a file using the file() type, returns a file object.

因此,两个函数其实都是一样的,下面只用file()。

在列举file()的作用时,使用help即是很好的方法,下面则是应重点关注的内容:

close(...)
 |      close() -> None or (perhaps) an integer.  Close the file.
flush(...)
 |      flush() -> None.  Flush the internal I/O buffer.
readline(...)
 |      readline([size]) -> next line from the file, as a string. 
readlines(...)
 |      readlines([size]) -> list of strings, each a line from the file.
seek(...)
 |      seek(offset[, whence]) -> None.  Move to new file position.
tell(...)
 |      tell() -> current file position, an integer (may be a long integer).
write(...)
 |      write(str) -> None.  Write string str to file.
writelines(...)
 |      writelines(sequence_of_strings) -> None.  Write the strings to the file.
xreadlines(...)
 |      xreadlines() -> returns self.


1.创建文件

--基本格式:

f = file(‘test.txt‘, ‘w‘)
f = write(‘Hello World!‘)
f.close()

·w:写模式,文件不存在就创建,存在则自动覆盖原来的内容,只能写,不能读;

·w+:写读模式,但一开始还是会清空原来文件内容,只是在写文件之后可以读取;

·写的内容放在内存当中,如果要写入磁盘,可以f.close()关闭文件或f.flush()实时写入磁盘;

·不可以实时改变模式,只能把文件关闭后,再次打开时定义模式;

--实例:

>>> f = file(‘test.txt‘, ‘w‘)
>>> f.write(‘Hello World!‘)
>>> f.flush()
[email protected]:~/seminar6/day2$ more test.txt
Hello World!

--write()与writelines()

·前者写入的内容只能是字符串,后者则可以写入列表:

>>> f.write([‘a‘, ‘b‘, ‘c‘])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: expected a character buffer object
>>> f.writelines([‘a‘, ‘b‘, ‘c‘])
>>>


2.读取文件与遍历文件内容

--基本格式:

f = file(‘test.txt‘, ‘r‘) ===>可以不加‘r‘,默认就是该模式
f = read()
f.close()

·r:默认;

·r+:读写模式,可以尝试使用,每读取一行,指针就跳到下一行,写的时候,就直接覆盖掉指针指的这一行;

·rb:在windows平台下编辑的文件,在linux中用python进行读取时,模式要选择“rb”,否则有可能会出现乱码的现象,即跨平台的文件都要注意此点;

--read()、readline、readlines()与xreadlines()

·前三者都是直接把文件内容全部写入内存当中,然后再全部读取或一行一行地读取;

·都采用迭代的方式读取,即指针最开始指向第一行,读取第一行后,指针指向下一行;

-read()

·把文件内容全部读取:

>>> f = file(‘test.txt‘, ‘r‘)
>>> f.read()
"Hello World!\nI‘m xpleaf.\nNice to meet you!\n"
>>> f.read()
‘‘            ===>内容已经读完,即指针已经在最后一行,后面没有内容

·可以用tell()查看当前指针的位置:

>>> f.tell()
43            ===>43,即是最后一个字符

·重新读取文件内容,可以f.close()后再次打开,也可以使用f.seek(0):

>>> f.seek(0)    ===>重新寻址,让指针指向文件最开始
>>> f.tell()
0
>>> print f.read()
Hello World!
I‘m xpleaf.
Nice to meet you!

-readline()

·以字符串方式,一行一行地读取文件内容:

>>> f.seek(0)
>>> f.readline()
‘Hello World!\n‘
>>> f.readline()
"I‘m xpleaf.\n"
>>> f.readline()
‘Nice to meet you!\n‘
>>> f.readline()
‘‘

-readlines()

·以列表的方式,一行一行地读取文件内容,一行即为列表中的一个元素:

>>> f.seek(0)
>>> f.readlines()
[‘Hello World!\n‘, "I‘m xpleaf.\n", ‘Nice to meet you!\n‘]
>>> f.readlines()
[]

·因此,习惯性的用法是:修改文件内容

>>> f.seek(0)
>>> filelist = f.readlines()
>>> print filelist
[‘Hello World!\n‘, "I‘m xpleaf.\n", ‘Nice to meet you!\n‘]
>>> filelist[2] = ‘See you next time!‘
>>> print filelist
[‘Hello World!\n‘, "I‘m xpleaf.\n", ‘See you next time!‘]

·再以w的方式打开文件,用f.writelines(filelist)的方式写入,即可实现修改文件内容的目的;

-xreadlines()

·不是先把文件内容全部写入内存,而是每读取一行才写入一行,写下一行时即对前面内存中的内容进行回收;

·在读取较大文件时,适宜采用这种办法。

--文件内容的遍历:使用readlines()

>>> f = file(‘test.txt‘, ‘r‘)
>>> filelist = f.readlines()
>>> for eachline in filelist:
...   print eachline,
... 
Hello World!
I‘m xpleaf.
Nice to meet you!


3.文件内容追加

--基本格式:

f = file(‘test.txt‘, ‘w‘)
f = write(‘Hello World!‘)
f.close()

·文件内容追加到最后一行上,如果最后一行有‘\n‘,则追加到下一行;

--实例:

>>> f = file(‘test.txt‘, ‘a‘)
>>> f.write(‘See you next time!‘)
>>> f.write(‘I will miss you much!\n‘)
>>> f.flush()
[email protected]:~/seminar6/day2$ cat test.txt
Hello World!
I‘m xpleaf.
Nice to meet you!
See you next time!I will miss you much!


4.文件内容替换

--基本格式:

import fileinput
for line in fileinput.input(‘filepath‘, inplace = 1):
  line = line.replace(‘oldtext‘, ‘newtext‘)
  print line,

·inplace = 1,表示要修改文件内的内容,默认值为0,表示不修改文件内容,加“print line,”时只打印内存中修改的内容(看下面例子);

·inplace = 1时,如果不加“print line,”,原来文件内容会为空;

·可以额外加backup参数,表示在修改文件内容时进行备份;

--实例:


-正确操作:

>>> import fileinput
>>> for line in fileinput.input(‘test.txt‘, inplace = 1, backup = ‘.ori‘):
...   line = line.replace(‘Hello World!‘, ‘Hello, everyone!‘)
...   print line,
... 
[email protected]:~/seminar6/day2$ ls -l test*
-rw-rw-r-- 1 xpleaf xpleaf 87  9月  4 15:32 test.txt
-rw-rw-r-- 1 xpleaf xpleaf 83  9月  4 15:19 test.txt.ori
[email protected]:~/seminar6/day2$ cat test.txt
Hello, everyone!
I‘m xpleaf.
Nice to meet you!
See you next time!I will miss you much!

-如果没有加inplace = 1时:

>>> for line in fileinput.input(‘test.txt‘):
...   line = line.replace(‘Nice‘, ‘Well‘)
...   print line,
... 
Hello, everyone!
I‘m xpleaf.
Well to meet you!
See you next time!I will miss you much!
[email protected]:~/seminar6/day2$ cat test.txt
Hello, everyone!
I‘m xpleaf.
Nice to meet you!
See you next time!I will miss you much!

-如果没有加“print line,”时:

>>> for line in fileinput.input(‘test.txt‘):
...   line = line.replace(‘Nice‘, ‘Well‘)
... 
>>> for line in fileinput.input(‘test.txt‘, inplace = 1):
...   line = line.replace(‘Hello‘, ‘Hey‘)
... 
[email protected]:~/seminar6/day2$ cat test.txt
[email protected]:~/seminar6/day2$     ===>文件内容已被清空
时间: 2024-12-15 00:16:59

【Python笔记】第二课(一):Python文件处理的相关文章

python 从第二行开始读文件

python 从第二行开始读文件 filename = info.txtf = open('info.txt') next(f) for line in f: print(line) next()函数获取了第一行的数据,但没有做任何动作.这样其后的FOR循环就直接从第二行开始读取执行. 原文地址:https://www.cnblogs.com/ChenYi0919/p/8856553.html

python基础第二课

一  认识模块 1.1  sys #!/usr/bin/env python3 # Author: Sam Gao import sys print(sys.path) #打印PYTHONPATH环境变量 # ['/home/sam/PycharmProjects/s14/day1', # '/home/sam/PycharmProjects/s14', # '/usr/lib/python35.zip', # '/usr/lib/python3.5', # '/usr/lib/python3.

【Python笔记】如何理解python中的generator functions和yield表达式

本篇笔记记录自己对Python的generator functions和yield表达式的理解. 1. Generator Functions Python支持的generator functions语法允许我们定义一个行为与iterator类似的函数,它可以被用在需要循环调用的场合.与普通函数相比,generator functions只是在函数定义中多了1个yield表达式,除此之外,没有其它特别之处. 当generator函数被创建时,python解释器会自动为它实现iteration p

Linux学习笔记 第二课

Linux第二课 一.yum命令使用 二.查看CentOS版本和内核 三.grub添加密码,自定义title,修改进度条   四.单用户模式   五.救援模式   六.Liunx启动过程                 一.yum 命令使用 1.[[email protected]~]# yum list 2.[[email protected]~]# yum -y intall rpm1 rpm2......     //  -y 不询问安装 3.[[email protected]~]# y

python笔记五:IO与文件

1.python IO:  Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘:  1)raw_input([prompt]) 函数从标准输入读取一个行,并返回一个字符串  2)input([prompt]) 函数会假设你的输入是一个有效的Python表达式,并返回运算结果.  3)eg:       str=raw_input("enter something:")  #输入的格式可以是任何形式     print str     str=input(&quo

python入门第二课

昨日回顾: - 计算机原理 - 计算机的五大组成部分 - CPU: 控制 + 运算 - 内存: 临时存储,通电有效,断电数据丢失. - 硬盘: 永久储存数据. - 输出设备: 显示器 - 输入设备: 鼠标.键盘... - 什么是语言 人与人之间交流的介质 - 什么是编程语言? 人与计算机之间交流的介质 - 为什么要编程? 通过编写的代码,让机器替代人类工作. - 编程语言分类: - 机器语言 二进制: 01010101101 机器能直接看懂的语言 优点: 执行效率高. 缺点: 开发效率低. -

python笔记 [第二篇]:基础数据类型

运算符 1.算数运算: 2.比较运算: 3.赋值运算: 4.逻辑运算: 5.成员运算: 基础数据类 1.数字: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取值范围为-2**63-2**63-1,即-9223372036854775808-9223372036854775807 class int(object): def bit_length(self): "&q

从零单排Python学习第二课

简易购物车: 1,商品展示 2,添加商品到购物车 #list集合保存商品信息product_list = [("电视机",5000), ("洗衣机",3000), ("电冰箱",2000), ("电吹风",1000), ("电风扇",300), ("热水器",2900)]#购物车数据 shopping_car = []#当前余额 salary = 100000#打印出商品信息 for i

初学Python(第二课)

一.列表.元组的操作 1.定义:列表类似于C中的数组,使用方法也相似.它的定义举例如下:letter = ['A','B','C','D','E','F']; 2.列表的切片 (1)访问一个元素且知道该列表的下标, 例如:访问'A'则: letter[0] (2)若要访问连续多个元素则适用下标, 例如:访问'B'.'C'.'D'则:  letter[1:4] 注意:切片时:顾头不顾尾 (3)若要访问最后一个元素, 例如:访问'F'则:    letter[-1] (4)若要访问从某个元素以后的所

Python-Django框架学习笔记——第二课:Django的搭建

Django 环境搭建 一. 版本选择 Django 1.5.x 支持 Python 2.6.5 Python 2.7, Python 3.2 和 3.3. Django 1.6.x 支持 Python 2.6.X, 2.7.X, 3.2.X 和 3.3.X Django 1.7.x 支持 Python 2.7, 3.2, 3.3, 和 3.4 (注意:Python 2.6 不支持了) Django 1.8.x 支持 Python 2.7, 3.2, 3.3, 3.4 和 3.5.  (长期支持