linux open()文件操作

python程序中经常用到的读文件:

f = open("___", ‘r‘)

for line in f:#这里每次读取文件的一行,line为字符串,串尾包括了‘\n‘!!!

    print line

f.close()

转自:http://www.jb51.net/article/58002.htm

1. open()语法

open(file[, mode[, buffering[, encoding[, errors[, newline[, closefd=True]]]]]])
open函数有很多的参数,常用的是file,mode和encoding
file文件位置,需要加引号
mode文件打开模式,见下面3
buffering的可取值有0,1,>1三个,0代表buffer关闭(只适用于二进制模式),1代表line buffer(只适用于文本模式),>1表示初始化的buffer大小;
encoding表示的是返回的数据采用何种编码,一般采用utf8或者gbk;
errors的取值一般有strict,ignore,当取strict的时候,字符编码出现问题的时候,会报错,当取ignore的时候,编码出现问题,程序会忽略而过,继续执行下面的程序。
newline可以取的值有None, \n, \r, ”, ‘\r\n‘,用于区分换行符,但是这个参数只对文本模式有效;
closefd的取值,是与传入的文件参数有关,默认情况下为True,传入的file参数为文件的文件名,取值为False的时候,file只能是文件描述符,什么是文件描述符,就是一个非负整数,在Unix内核的系统中,打开一个文件,便会返回一个文件描述符。

2. Python中file()与open()区别
两者都能够打开文件,对文件进行操作,也具有相似的用法和参数,但是,这两种文件打开方式有本质的区别,file为文件类,用file()来打开文件,相当于这是在构造文件类,而用open()打开文件,是用python的内建函数来操作,建议使用open

3. 参数mode的基本取值

Character Meaning
‘r‘ open for reading (default)
‘w‘ open for writing, truncating the file first
‘a‘ open for writing, appending to the end of the file if it exists
‘b‘ binary mode
‘t‘ text mode (default)
‘+‘ open a disk file for updating (reading and writing)
‘U‘ universal newline mode (for backwards compatibility; should not be used in new code)

r、w、a为打开文件的基本模式,对应着只读、只写、追加模式;
b、t、+、U这四个字符,与以上的文件打开模式组合使用,二进制模式,文本模式,读写模式、通用换行符,根据实际情况组合使用、

常见的mode取值组合

?


1

2

3

4

5

6

7

8

9

10

11

r或rt 默认模式,文本模式读

rb   二进制文件

 

w或wt 文本模式写,打开前文件存储被清空

wb  二进制写,文件存储同样被清空

 

a  追加模式,只能写在文件末尾

a+ 可读写模式,写只能写在文件末尾

 

w+ 可读写,与a+的区别是要清空文件内容

r+ 可读写,与a+的区别是可以写到文件任何位置

4. 测试
测试文件test.txt,内容如下:

?


1

2

3

Hello,Python

www.jb51.net

This is a test file

用一小段代码来测试写入文件直观的显示它们的不同

test = [ "test1\n", "test2\n", "test3\n" ]
f = open("test.txt", "a+")
try:
 #f.seek(0)
 for l in test:
  f.write(l)
finally:
 f.close()

a+、w+和r+模式的区别(测试后还原test.txt)
a+模式

?


1

2

3

4

5

6

7

# cat test.txt

Hello, Python

www.jb51.net

This is a test file

test1

test2

test3

w+模式

?


1

2

3

4

# cat test.txt

test1

test2

test3

r+模式
在写入文件前,我们在上面那段代码中加上一句f.seek(0),用来定位写入文件写入位置(文件开头),直接覆盖字符数(注意\n也是一个字符)

?


1

2

3

4

5

6

# cat test.txt

test1

test2

test3

inuxeye.com

This is a test file

注意:r+模式打开文件时,此文件必须存在,否则就会报错,‘r‘模式也如此
其他测试

>>> f = open(‘test.txt‘)
>>> f.read() #读取整个文件,字符串显示
‘Hello,Python\nwww.jb51.net\nThis is a test file\n‘
>>> f.read() #指针在文件末尾,不能再读取内容
‘‘
>>> f = open(‘test.txt‘)
>>> f.readline() #一次读一行,指针在该行末尾
‘Hello,Python\n‘
>>> f.tell() #改行的字符长度
13
>>> f.readline()
‘www.jb51.net\n‘
>>> f.tell()
30
>>> f.readline()
‘This is a test file\n‘
>>> f.tell()
50
>>> f.readline()
‘‘
>>> f.tell() #指针停在最后一行
50
>>> f = open(‘test.txt‘)
>>> f.readlines() #读取整个文件,以列表显示
[‘Hello,Python\n‘, ‘www.jb51.net\n‘, ‘This is a test file\n‘]
>>> f.tell() #指针在最后一行
50

1

2

3

4

5

6

7

8

>>> f = open(‘test.txt‘,‘w‘) #覆盖创建新文件

>>> f.write(‘Hello,Python!‘) #如果写入内容小于1024,会存在内存,否则需要刷新

>>> f.flush() #写入到硬盘

>>> f.close() #关闭文件会自动刷新

>>> f.write(‘Hello,Linuxeye‘) #关闭后,写失败,提示文件已经关闭

Traceback (most recent call last):

 File "<stdin>", line 1, in <module>

ValueError: I/O operation on closed file

时间: 2024-11-07 11:48:13

linux open()文件操作的相关文章

qt ui程序使用Linux的文件操作open、close (转)

原文地址:qt ui程序使用Linux的文件操作open.close 作者:kjpioo 提出这个问题是因为在qt的QWidget类型的对象中,close()函数会和QWidget::close()冲突,如果在类函数实现时直接用close(),在程序编译时会提示提示错误(具体什么错误不记得了). 错误原因是QWidget::close()与stdio.h中的文件关闭标准函数close()产生了歧义.所以可以参考下文链接中的解决方案. http://bytes.com/topic/c/answer

Linux C 文件操作 -- 系统调用(open(),read()...) 和 标准I/O库(fopen(),fread()...)

一.什么是文件 在讲述文件操作之前,我们首先要知道什么是文件.看到这个问题你可能会感觉到可笑,因为对于用过计算机的人来说,文件是最简单不过的概念了,例如一个文本是一个文件,一个work文档是一个文件等.但是在Linux中,文件的概念还远不止于这些,在Linux中,一切(或几乎一切)都是文件.文件包括很多的内容,例如:大家知道的普通文件是文件,目录也是一个文件,设备也是一个文件,管道也是一个文件等等.对于目录.设备这些的操作也可以完全等同于对纯文本文件的操作,这也是Linux非常成功的特性之一吧.

linux程序设计——文件操作(第三章)

第三章    文件操作 3.1 linux文件结构 与UNIX一样,linux环境中的文件具有特别重要的意义,因为它们为操作系统服务和设备提供了一个简单而一致的接口.在linux中,一切都是文件. 这意味着,通常程序可以像使用文件那样使用磁盘文件.串行口.打印机等等. 目录也是文件,但它是一种特殊类型的文件.在现代UNIX(包括linux)版本中,即使是超级用户可能也不再被允许直接对目录进行写左操作了.所有用户通常都使用上层的opendir/readdir接口来读取目录,而无需了解特定系统中目录

【大话QT之五】Windows与Linux下文件操作监控的实现

一.需求分析: 随着渲染业务的不断进行,数据传输渐渐成为影响业务时间最大的因素.究其原因就是因为数据传输耗费较长的时间.于是,依托于渲染业务的网盘开发逐渐成为迫切需要解决的需求.该网盘的实现和当前市场上网盘实现有一些的不同,主要在客户端与服务器端的操作需要双向进行,即:用户在客户端的操作需要及时同步到服务器端:在服务器端作业渲染生成的文件要及时同步到客户端.即:用户不在需要单独的下载数据,而是在作业运行的同时,渲染就过就会自动同步到客户端,大大缩短了等待时间.当然,无论是在客户端还是在服务端都面

【Linux】文件操作系统调用

一. 文件描述符 在Linux下使用文件描述符来表示设备文件和普通文件.文件描述符是一个整型的数据,所有对文件的操作都通过文件描述符实现.文件描述符的范围是0~OPEN_MAX,系统中有3个已经分配的文件描述符,即标准输入.标准输出.和标准错误,他们的文件描述符的值分别为0.1.2. 文件描述符是文件系统中连接用户空间和内核空间的枢纽.当打开一个或者创建一个文件时,内核空间创建相应的结构,并生成一个整型的变量传递给用户空间的对应进程,进程用这个文件描述符来对文件进行操作. 二. 打开.创建文件o

Windows与Linux下文件操作监控的实现

一.需求分析: 随着渲染业务的不断进行,数据传输渐渐成为影响业务时间最大的因素.究其原因就是因为数据传输耗费较长的时间.于是,依托于渲染业务的网盘开发逐渐成为迫切需要解决的需求.该网盘的实现和当前市场上网盘实现有一些的不同,主要在客户端与服务器端的操作需要双向进行,即:用户在客户端的操作需要及时同步到服务器端:在服务器端作业渲染生成的文件要及时同步到客户端.即:用户不在需要单独的下载数据,而是在作业运行的同时,渲染就过就会自动同步到客户端,大大缩短了等待时间.当然,无论是在客户端还是在服务端都面

linux编程---文件操作

文件操作的系统函数: open函数,close函数,read函数,write函数,getcwd函数,access函数,stat函数,fstat函数,getcwd函数 函数原型: 1:open函数 功能:打开现有的文件,或者创建新文件并打开:,成功返回值是文件标识号,失败为-1 参数:parhname是文件路径,flag标识可取如下值 mode表示文件访问权限 2:close函数 功能:关闭文件操作,返回值表示是否成功 参数:文件标识号 3:read函数 功能:读取文件内容,返回值表示实际读取内容

linux之文件操作和权限

文件查看 cat显示文本 cat [option] ... [file] ... cat -E a.txt # 显示$符号 cat -n a.txt # 对显示的每一行加行号 cat -b a.txt # 对非空行进行编号 cat -s a.txt # 对连续的空行就行压缩 tac倒叙显示 less分屏显示文本或stdin输出 space空格 # 向下翻屏 enter # 向下翻一行 q # 退出 /文本 # 搜索,搜索结果高亮显示 n # 向下找到 N # 向上查找 less是man命令的默认

Linux学习-文件操作

文件操作 pwd 显示当前的目录名称 cd 更改当前的操作目录 cd /path/to/...绝对路径 cd ./path/to/..相对路径 cd ../path/to/..相对路径 cd /root 回到根目录 cd - 返回上一次的目录中 cd ./ .表示当前的目录 cd .. 回到上一级目录 / 和 /root 是不同的目录 / 是根目录 /root 是root用户的家目录 ls 查看当前目录下的文件 常用参数 l 长格式显示文件,以文件名进行排序 a 显示隐藏文件 r 逆序显示,以文

Windows、Linux下文件操作(写、删除)错误的产生原因、及解决方法

catalog 0. 引言 1. Linux平台上涉及的File IO操作 2. Windows平台上涉及的File IO操作 0. 引言 本文试图讨论在windows.linux操作系统上基于C库进行文件IO操作时,可能遇到的错误,及其解决方法,主机安全攻防产品除了需要将安全攻防上的领域知识固化到程序实现上之外,还极度依赖关联系统本身.编程语言库的特性,原则上,并不是所有的安全需求都能100%地落实到程序设计中,这需要我们对操作系统.编程语言本身具有较深的理解 Relevant Link: h