您的位置:首页 > 编程语言 > Python开发

python 文件操作

2016-01-25 20:52 585 查看
Linux下万物皆文件,所以处处都要遇到对文件的处理操作,win 系统下也一样,更何况python 的跨平台如此强大了:

今天我们来了解python 对文件的操作

1:读文件

要以读文件的模式打开一个文件,使用python 内置函数open(),格式如下

f= open("test.open.txt",'r')   ###   open函数("文件名","打开文件使用的模式)  如果文件不存在,则报错提示

 

如果文件打开成功,就可以使用read()方法一次性读取文件内容,所有的内容读到内存,用一个str对象表示,

f.read()  ###  "hello world"

 

最后我们调用close()方法关闭文件,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量是有限的

f.close()  ### 关闭文件

 

这样感觉是不是很麻烦,每次都要打开关闭,而且很可能就是会忘记关闭,为了解决这个问题,我们可以使用python 的with 语句来自动帮我们调用close()方法:

with open("test.open.txt",'r') as f:
    print(f.read())

是不是感觉更简洁了,而且也不用调用close()方法

如果文件特别大,比如几个G或几十G,我们依然用read()方法时,内存肯定”吃”不定,为了预防这种现象发生,我们可以使用read(size)方法,每次只读取size个字节的内容,另外,也可以使用readline()每次只读取一行内容,调用 readlines()一次读取所有内容并按行返回list,

下面我们分别来使用这些方法

1:read()方法,一次读入所有内容

with open("test.open",'r') as f:
    print(f.read())

### 输出结果
this is a test txt
my name is zhang
my age is .....

 

2:readline()方法,一次读入一行内容,逐行向下读取

with open("test.open",'r') as f:
    print(f.readline())
    print(f.readline())
    print(f.readline())

### 输出结果

this is a test txt

my name is zhang

这里我们发现读取行时,出现了空格,是因为python 不会删除行结束符,这个操作只能程序员自己解决:

我们可以strip()方法

with open("test.open","r") as f:
    print(f.readline().strip())
    print(f.readline().strip())
    print(f.readline().strip())

### 输出结果
my name is ....
my job is ....
my age is ....

 

 

 

3:readlines()方法,读入所有内容,返回列表形式

with open("test.open",'r') as f:
    print(f.readlines())

### 输出结果
['\n', 'this is a test txt\n', 'my name is zhang\n', 'my age is .....\n']

 

二:写文件

对文件进行写操作使用python 的write()方法

首先打开文件时需要使用”w” 写模式

with open("test.open",'w') as f:
    f.write("my name is ....\n")
    f.write("my job is ....\n")
    f.close()
with open("test.open",'r') as f:
    print(f.read())
   
### 输出结果
my name is ....
my job is ....

我们发现,原先我们里面的内容没有了,这是因为w是以写模式创建一个文件,而不是打开,也就是覆盖了原来的文件,内容也被清空。那么我可以使用追加的方法

三:追加

with open("test.open",'a') as f:
    f.write("my age is ....\n")
    f.close()

with open("test.open","r") as f:
    print(f.read())

### 输出结果
my name is ....
my job is ....
my age is ....

a 模式代表追加,如果这个文件不存在,a模式会自动创建文件,并写入。

 

四:其他

模式,除了读,写,追加以外,python 还提供了很多模式:



 

五:文件的其他方法

1:|  detach(...) :待大神解救

 

2:|  fileno(...) :返回文件的描述符

 

3: | flush(...)  : 把缓冲区的数据刷到硬盘,而不是被动的等待输出缓冲区被写入

 

4:|  isatty(...) :布尔内建函数,当文件是一个类try设备时返回 True,否则返回False:

 

5: | readable(...)待大神解救

 

6:|  seek(...) :可以在文件中移动文件指针到不同的位置

 

7: | seekable(...)待大神解救

 

8:|  tell(...) : 显示当前的位置

 

9: | truncate(...) :将文件截取到当前文件指针位置或者到给写size,以字节为单位

 

10:|  writable(...)待大神解救    

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: