Python 对文件进行读和写操作还是挺方便的,可以使用 open
加 模式
进行操作,用起来还是很自由的,可以一次全部读入内容存入一个字符串(小数据量好用),也可以逐行读取.
1.使用 open 和 file 直接进行读和写
- 读文件,这种方法会把文件一次性全部读入到内存中,然后再逐行打印,并不是一个很好的方法,当文件很大时候,内存就吃不消了
txt = open("test.txt")
line = txt.readlines()
for lines in line:
print lines
- 利用file的迭代器读取,这种方法并没有显示的读取整个文件,而是利用迭代器每次读取一行,这种方法书写简单,速度也快,处理大文件也没问题,建议这种方法
for line in open("test.txt"):
print line
- 写入文件
wr = file("write.txt",'a+')
read.write("\n")
read.write("write string to txt file")
read.close
- 或者打开一个文件然后进行写入操作
wr = open("write.txt","w")
wr.write("string to write")
wr.close()
2.一次性全部读取文件作文一个字符串处理
- 当文件内容不大时候,可以一次性全部读取,作为一个大的字符串
all_data = open("test.txt").read( )
3.打开文件的模式
- file_handler = open(filename,mode)
- mode
模式 | 描述 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
- 打开一个 flie 后这个文件是一个对象,可以对这个文件对象属性进行操作
- file 文件的所有属性:
属性 | 描述 |
---|---|
file.closed | 返回true如果文件已被关闭,否则返回false。 |
file.mode | 返回被打开文件的访问模式。 |
file.name | 返回文件的名称。 |
file.softspace | 如果用print输出后,必须跟一个空格符,则返回false。否则返回true。 |
4. Python 目录操作
-
以下基因 os 模块操作 使用前先
import os
-
改变当前工作目录
os.chdir("/home/dir")
- 获取当前工作目录
os.getcwd()
- 创建目录
- 可以使用 os 模块的
mkdir()
方法在当前目录下创建新的目录
os.mkdir("/home/test")
- 删除目录
- 可以使用 os 模块的
rmdir()
方法删除当前目录
os.rmdir( "/tmp/test" )