Python学习笔记9—文件

打开文件

默认是以r,只读模式打开的

>>> f = open("/test/demo.txt")
>>> for line in f:
...  print line,      #后面加一个逗号,就去掉了原来默认增加的 \n 了,少了空行。
...
hello
python

写文件

"w":以写方式打开文件,可向文件写入信息。如文件存在,则清空该文件,再写入新内容,如果不存在则创建文件

>>> f1 = open("/test/demo.txt","w")
>>> f1.write("hello,python")
>>> f1.close()

"a":以追加模式打开文件(即一打开文件,文件指针自动移到文件末尾),如果文件不存在则创建

>>> f2 = open("/test/demo22.txt","a")
>>> f2.write("I like C\n")
>>> f2.close()

使用 with

这里就不用 close()了。而且这种方法更有 Python 味道,或者说是更符合 Pythonic 的一个要求。

>>> with open("/test/demo.txt","a") as f:
...  f.write("Hello World")
...
>>> with open("/test/demo.txt","r") as f:...  print f.read()... hello,pythonHello World

获取文件状态

>>> import os
>>> file_stat = os.stat("131.txt")
>>> file_stat
posix.stat_result(st_mode=33188, st_ino=7077890, st_dev=64768, st_nlink=1, st_uid=0, st_gid=0, st_size=14, st_atime=1473126833, st_mtime=1473126819, st_ctime=1473126819)
>>> file_stat.st_ctime
1473126819.3923097
>>> import time                #引入time模块,转换时间
>>> time.localtime(file_stat.st_ctime)
time.struct_time(tm_year=2016, tm_mon=9, tm_mday=6, tm_hour=9, tm_min=53, tm_sec=39, tm_wday=1, tm_yday=250, tm_isdst=0)

read/readline/readlines

  • read:如果指定了参数 size,就按照该指定长度从文件中读取内容,否则,就读取全文。被读出来的内容,全部塞到一个字符串里面。这样有好处,就是东西都到内存里了,随时取用,比较快捷;“成也萧何败萧何”,也是因为这点,如果文件内容太多了,内存会吃不消的。文档中已经提醒注意在“non-blocking”模式下的问题
>>> f = open("you.md")>>> content = f.read()>>> content‘You Raise Me Up \nWhen I am down and, oh my soul, so weary; \nThen troubles come and my heart burdened be; \n‘>>> print contentYou Raise Me Up When I am down and, oh my soul, so weary; Then troubles come and my heart burdened be; 

>>> f.close()
  • readline:那个可选参数 size 的含义同上。它则是以行为单位返回字符串,也就是每次读一行,依次循环,如果不限定 size,直到最后一个返回的是空字符串,意味着到文件末尾了(EOF)。
>>> f.readline()‘You Raise Me Up \n‘>>> f.readline()‘When I am down and, oh my soul, so weary; \n‘>>> f.readline()‘Then troubles come and my heart burdened be; \n‘>>> f.readline()‘‘>>> f.close()

用循环语句完成对整个文件的读取

#/usr/bin/env python
#coding=utf-8
f = open("/python/you.md")
while True:
    line = f.readline()
    if not line:        #到 EOF,返回空字符串,则终止循环
      break
    print line,         #注意后面的逗号,去掉 print 语句后面的 ‘\n‘,保留原文件中的换行
f.close()
  • readlines:size 同上。它返回的是以行为单位的列表,即相当于先执行readline() ,得到每一行,然后把这一行的字符串作为列表中的元素塞到一个列表中,最后将此列表返回。
>>> f = open("you.md")>>> content = f.readlines()>>> content[‘You Raise Me Up \n‘, ‘When I am down and, oh my soul, so weary; \n‘, ‘Then troubles come and my heart burdened be; \n‘]

>>> for line in content:                  #使用循环取出...  print line,... You Raise Me Up When I am down and, oh my soul, so weary; Then troubles come and my heart burdened be;

读很大的文件

如果文件太大,就不能用read() 或者readlines() 一次性将全部内容读入内存,可以使用 while 循环和readlin() 来完成这个任务。
此外,还有一个方法:fileinput 模块

>>> import fileinput
>>> for line in fileinput.input("you.md"):
...  print line,
...
You Raise Me Up
When I am down and, oh my soul, so weary;
Then troubles come and my heart burdened be;

还有一种方法更常用

>>> f = open("you.md")
>>> for line in f:
...  print line,
...
You Raise Me Up
When I am down and, oh my soul, so weary;
Then troubles come and my heart burdened be;
>>> f.close()

之所以能够如此,是因为 file 是可迭代的数据类型,直接用 for 来迭代即可。

seek

这个函数的功能就是让指针移动。特别注意,它是以字节为单位进行移动的。比如:

>>> f = open("you.md")
>>> f.readline()
‘You Raise Me Up \n‘
>>> f.readline()
‘When I am down and, oh my soul, so weary; \n‘
>>> f.seek(0)
>>> f.readline()
‘You Raise Me Up \n‘

此时指针所在的位置,还可以用tell() 来显示,如

>>> f.tell()
17
时间: 2024-08-01 16:12:16

Python学习笔记9—文件的相关文章

python学习笔记九——文件与目录

1.python进行文件读写的函数是open或file类 mode:r  只读 r+   读写 w  写入,先删除原文件,再重新写入,如果文件没有则创建 w+  读写,先删除原文件,再重新写入,如果文件没有则创建(可写入和输出) a  写入,在文件末尾追加新的内容,文件不存在则创建 a+  读写,在文件末尾追加新的内容,文件不存在则创建 b  打开二进制文件,可与r,w,a,+结合使用 U  支持所有的换行符号,"\r","\n","\r\n"

python学习笔记(文件)

打开文件 open函数使用一个文件名作为唯一的强制参数,返回一个文件对象 语法: file object = open(file_name [, access_mode][, buffering]) 各个参数的细节如下: file_name:file_name变量是一个包含了你要访问的文件名称的字符串值. access_mode:access_mode决定了打开文件的模式:只读,写入,追加等.所有可取值见如下的完全列表.这个参数是非强制的,默认文件访问模式为只读(r). buffering:如果

转载-Python学习笔记之文件读写

Python 文件读写 Python内置了读写文件的函数,用法和C是兼容的.本节介绍内容大致有:文件的打开/关闭.文件对象.文件的读写等. 本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件读写,也需要注意编码问题:其他文件的读写及编码相关详见专题的博文. open()   close()     with open(...) as ... 看以下示例就能了解 Python 的 open() 及 close() 函数.这边调用 read()方法可以一次读取文件的全部内容,Python把

python学习笔记(三):文件操作和集合

这篇博客来说一下python对文件的操作. 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 现有以下文件file.txt: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 寂寞当然有一点 你不在我身边 总是特别想念你的脸 距离是一份考卷 测量

Python学习笔记之文件和流

打开文件:open(name[,mode[,buffering]]),返回一个文件对象,模式(mode)和缓冲(buffering)是两个可选参数. 假设有一个名为somefile.txt的文件,存储路径为c:\text,打开方式如下:f = open(r'C:\text\somefile.txt') mode参数:如果open函数只带一个文件名参数,可以获得能读取文件内容的文件对象,如果要进行写操作,则必须要提供一个模式操作显式声明. 值 描述 'r' 读模式 'w' 写模式 'a' 追加模式

Python学习笔记六--文件和输入输出

6.1文件对象 所有Python对文件的操作都是基于对文件对象的操作.那么就从文件对象的创建说起.open()[file()]提供初始化输入输出的接口.open()成功打开文件时会返回一个文件对象. open()方法的语法: file_object=open(filename,access_mode,buffering) filename,表示要打开的文件名的字符串,可以是相对路径也可以是绝对路径. access_mode,表示打开方式.常见有'r'.'w'.'a',分别表示读模式,写模式,追加

python学习笔记4-python文件操作

python文件操作 open r:以读方式打开 w:以写方式打开 a:以追加模式 r+:读写模式 w+:读写模式(参见w) a+:读写模式(参见a) rb:以二进制读模式打开 wb:以二进制写模式打开(参见w) ab:以二进制追加模式打开(参见a) rb+:以二进制读写模式打开(参见r+) wb+:以二进制读写模式打开(参见w+) ab+:以二进制读写模式打开(参见a+) with open 使用for循环遍历文件 打开文件 [[email protected] ~]# vim forread

转载-python学习笔记之文件I/O

Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你传递的表达式转换成一个字符串表达式,并将结果写到标准输出如下: #!/usr/bin/python # -*- coding: UTF-8 -*- print "Python 是一个非常棒的语言,不是吗?"; 你的标准屏幕上会产生以下结果: Python 是一个非常棒的语言,不是吗? 读取

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

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

python学习笔记 操作文件和目录

如果我们要操作文件.目录,可以在命令行下面输入操作系统提供的各种命令来完成.比如dir.cp等命令. 如果要在Python程序中执行这些目录和文件的操作怎么办?其实操作系统提供的命令只是简单地调用了操作系统提供的接口函数,Python内置的os模块也可以直接调用操作系统提供的接口函数. 打开Python交互式命令行,我们来看看如何使用os模块的基本功能: >>> import os >>> os.name # 操作系统类型 'posix' 如果是posix,说明系统是L