Python 学习之文件/IO篇
控制台输入和输出
输出
类似C,Python中最简单的控制台输出函数是print
#!/usr/bin/python
# coding=utf-8
print "python 是世界上最牛皮的语言"
结果
python 是世界上最牛皮的语言
输入
- raw_input
- input
python提供了两个用于键盘输入的函数,它们都是从标准输入读取一个行,并去掉换行符。不一样的是后者可以接受一个python表达式的输入
#!/usr/bin/python
# coding=utf-8
raw_input_str = raw_input("raw_input请输入:")
print "你输入的内容是: ", raw_input_str
input_str = input("input请输入:")
print "你输入的内容是: ", input_str
结果
raw_input请输入:1111
你输入的内容是: 1111
input请输入:[x for x in range(1,10,2)]
你输入的内容是: [1, 3, 5, 7, 9]
打开和关闭文件
与java类似,python提供了file对象,可进行大部分的文件操作。
创建一个file对象
file object = open(file_name [, access_mode][, buffering])
- file_name
- access_mode
- buffering
file_name:
需要读写的文件名字符串,可包含路径。例如:
/home/zjs/workspace/test.txt
access_mode:
打开文件的模式:只读,写入,追加等,这个参数是非强制的,默认文件访问模式为只读(r)。
模式 | 描述 |
---|---|
t | 文本模式 (默认)。 |
x | 写模式,新建一个文件,如果该文件已存在则会报错。 |
b | 二进制模式。 |
+ | 打开一个文件进行更新(可读可写)。 |
U | 通用换行模式(不推荐)。 |
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
buffering:
如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。如果不填写,默认不寄存。
例子:
fo = open("/home/zjs/workspace/test.txt", "w", 1)
#以写入模式打开test.txt文件,缓存区以行寄存。
文件操作
通过具体的代码可以更容易的记忆这些操作。
文件读写操作
#!/usr/bin/python
# coding=utf-8
# 以可读写模式打开test.txt,如果test.txt存在则在末尾附加编辑,如果不存在则创建.
fo = open("/home/zjs/Documents/myNote/pythonNote/test_demo1/test.txt", "a+", 0)
fo.write("我是一个测试文件qqq\n") #在文件末尾写入字符串
position = fo.tell() # 获取指针位置
print "当前文件位置 :%s "% position
fo.seek(0, 0) #将指针指向文件头
str = fo.read() #读取文件中的字符串
fo.close()
print "输入的内容为: %s" % str
print "文件名:%s" % fo.name
print "是否已关闭 %s: " % fo.closed
print "访问模式 : %s" % fo.mode
print "末尾是否强制加空格 %s: " % fo.softspace
文件重命名/删除
Python的os模块提供了重命名和删除文件的操作,但是使用这个模块需要导包。
# !/usr/bin/python
# coding=utf-8
import os
# 重命名文件test.txt到test1.txt。
os.rename("/home/zjs/Documents/myNote/pythonNote/test_demo1/test.txt", "/home/zjs/Documents/myNote/pythonNote/test_demo1/test1.txt")
# 删除一个已经存在的文件test1.txt
os.remove("/home/zjs/Documents/myNote/pythonNote/test_demo1/test1.txt")
# 创建一个文件夹
os.mkdir("/home/zjs/Documents/myNote/pythonNote/test_demo1/test")
# 进入test目录
os.chdir("/home/zjs/Documents/myNote/pythonNote/test_demo1/test")
# 显示当前的工作目录
print os.getcwd()
# 删除目录
os.chdir("/home/zjs/Documents/myNote/pythonNote/test_demo1")
os.rmdir("/home/zjs/Documents/myNote/pythonNote/test_demo1/test")