打开文件

  使用open函数,语法格式为:open( name[, mode[, buffering]]),name为打开文件名,mode为打开文件方式,buffering控制文件的缓冲。

  mode可选,默认为只读模式,即r, 其中使用的参数有

open函数中mode参数的值
描述
r
w
a 文件末尾追加
b 二进制模式,可添加到其他模式中
+ 读/写模式,可以添加到其他模式中

  buffering可选,0表示输入输出无缓冲; 1表示有缓冲, 使用内存来代替硬盘,只有使用flush或者close时才会更新硬盘数据;大于1表示指定缓冲区大小;小于0表示使用默认的缓冲区大小。

类文件对象中包含一些读方法和写方法以及定位光标,关闭类文件对象等方法。

类文件对象方法
read 读取字符
readline 读取一行
readlines 读取整个文件的所有行并将其作为列表返回
write 写入字符
writelines 将字符串列表写入文件,不过程序不会增加新行,需要自己添加
seek 定位光标位置,
close 关闭文件对象

注意,写文件没有writeline方法,因为可以用write方法。

关闭文件

  写过的文件总是应该关闭,是因为python可能会缓存写入的数据,如果程序因为某些原因崩溃了,那么数据根本就不会写入文件。要确保文件被关闭,应该使用try/finally语句,并且在finally子句中调用close方法。

f = open('c:\file.txt')
try:
f.write('close the file')
finally:
f.close()

此外,还可以使用with语句,可以打开文件并将其赋值到变量上。之后就可以将数据写入文件。文件在语句结束后会自动关闭,即使是由于异常引起的结束也是如此。

with open('c:\file.txt') as f:
f.write('close the file')

  

  

操作文件

打开文件得打类文件对象以后就可以使用类文件对象方法进行读写操作了。

例如,f = open('file.xt', 'r') 以只读方式打开文件,然后可以str = f.read(n)表示从打开的文件中读取n个字符

循环处理文件每个字符

f = open(filename)
while True:
char = f.read(1)
if not char: break
print(char)
f.close()

循环处理文件每行

f = open(filename)
while True:
line = f.readline()
if not line:
break
print(line)
f.close()

如果文件不是很大,可以将直接读取整个文件,然后进行处理

f = open(filename)
for char in f.read():
print(char)
f.close()
f = open(filename)
for line in f.readline():
print(line)
f.close()

文件迭代器操作文件

在python中,文件对象是可以迭代的,这意味着可以直接在for循环中使用它们,从而对它们进行迭代。

f = open(filename)
for line in f:
print(line)
f.close()

sys.stdin也是可以迭代的,就像其他的文件对象一样。如果想要迭代标准输入中的所有行,可以按如下形式使用

import sys
for line in sys.stdin:
print(line)

Python文件方法的更多相关文章

  1. C++ 调用Python文件方法传递字典参数并接收返回值

    首先本地需要安装有Python环境,然后在c++工程中包含Python的头文件,引用Python的lib库. //python 初始化 Py_Initialize(); if (!Py_IsIniti ...

  2. Python学习(16)File(文件)方法

    Python File(文件) 方法 file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数: 序号 方法及描述 1 file.close() 关闭文件.关闭后文件不能再进行读 ...

  3. [Python]读写文件方法

    http://www.cnblogs.com/lovebread/archive/2009/12/24/1631108.html [Python]读写文件方法 http://www.cnblogs.c ...

  4. python文件的md5加密方法

    本文实例讲述了python文件的md5加密方法.分享给大家供大家参考,具体如下: 一.简单模式: from hashlib import md5 def md5_file(name): m = md5 ...

  5. Python 文件 writelines() 方法

    概述 Python 文件 writelines() 方法用于向文件中写入一序列的字符串. 这一序列字符串可以是由迭代对象产生的,如一个字符串列表. 换行需要制定换行符 \n. 语法 writeline ...

  6. Python 文件 write() 方法

    概述 Python 文件 write() 方法用于向文件中写入指定字符串. 在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时你在文件中是看不到写入的内容的. 语法 write() 方法语法如 ...

  7. Python 文件 truncate() 方法

    概述 Python 文件 truncate() 方法用于截断文件并返回截断的字节长度. 指定长度的话,就从文件的开头开始截断指定长度,其余内容删除:不指定长度的话,就从文件开头开始截断到当前位置,其余 ...

  8. Python 文件 tell() 方法

    描述 Python 文件 tell() 方法返回文件的当前位置,即文件指针当前位置. 语法 tell() 方法语法如下: fileObject.tell() 参数 无 返回值 返回文件的当前位置. 实 ...

  9. Python 文件 seek() 方法

    概述 Python 文件 seek() 方法用于移动文件读取指针到指定位置. 语法 seek() 方法语法如下: fileObject.seek(offset[,whence]) 参数 offset  ...

随机推荐

  1. canvas 在线画图

    canvas 在线画图 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  2. POJ1236 - Network of Schools tarjan

                                                     Network of Schools Time Limit: 1000MS   Memory Limi ...

  3. scp 使用

    [spark-hadoop@master ~]$ sudo scp /etc/profile spark-hadoop@slave1:/etc spark-hadoop@slave1's passwo ...

  4. 输入框提示文字js

    <input style="margin-right: 0px; padding-right: 0px;" class="text" required=& ...

  5. loadrunner关联数组后拼凑字符串

    loadrunner拼接关联数组的元素 int arrSize=0; int index=1; int len=0; char arryStartString[1024]=""; ...

  6. js:数据结构笔记12--排序算法(2)

    高级排序算法:(处理大数据:百万以上) 希尔排序:是插入排序的优化版: 首先设置间隔数组,然后按照每个间隔,分别进行排序: 如第一个间隔为5,首先a[5]与a[0]进行插入排序;然后a[6]和a[0] ...

  7. 递推DP 赛码 1005 Game

    题目传送门 /* 递推DP:官方题解 令Fi,j代表剩下i个人时,若BrotherK的位置是1,那么位置为j的人是否可能获胜 转移的时候可以枚举当前轮指定的数是什么,那么就可以计算出当前位置j的人在剩 ...

  8. ural 1306. Sequence Median

    1306. Sequence Median Time limit: 1.0 secondMemory limit: 1 MBLanguage limit: C, C++, Pascal Given a ...

  9. ural 1222. Chernobyl’ Eagles

    1222. Chernobyl’ Eagles Time limit: 1.0 secondMemory limit: 64 MB A Chernobyl’ eagle has several hea ...

  10. 【wikioi】1034 家园(最大流+特殊的技巧)

    http://wikioi.com/problem/1034/ 太神了这题. 其实一开始我以为是费用流,但是总感觉不对. 原因是我没看到一句话,特定的时刻到达特定的点!! 也就是说,并不是每艘船每次都 ...