1 标准输入输出IO
- (1) 打印到屏幕 print()
print(self, *args, sep=’ ‘, end=’n’, file=None):
把传递的表达式 转换成一个 字符串表达式
known special case of print
"""
print(value, ..., sep=' ', end='n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
- (2) 读取键盘的输入 print()
input(*args, **kwargs):
从标准输入读取一个行,并返回一个字符串
Read a string from standard input
注意 python2 中
raw_input 与python3的input一样
input可以接收一个Python表达式作为输入,并将运算结果返回
str = input("请输入表达式:");
[i for i in range(4)]
print "你输入的内容是: ", str
[0,1,2,3]
2 数据文件的读写,打开和关闭文件
- (1) 创建file文件对象—open()方法
用Python内置的open()函数打开一个文件,创建一个file对象,然后使用相关的方法才可以调用它进行读写
f=open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
f--文件句柄对象
file:访问的文件名称。
mode:决定了打开文件的模式:只读,写入,追加等。默认文件访问模式为只读(r)。
encoding:指定编码格式,gbk,utf8..。
buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
打开文件的不同方式:
模式描述
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
文件操作图解:
模式
r
r+
w
w+
a
a+
读
+
+
+
+
写
+
+
+
+
+
创建
+
+
+
+
覆盖
+
+
指针在开始
+
+
+
+
指针在结尾
+
+
- (2) file文件对象的属性和方法
一个被打开的file文件,可以通过操作得到有关该文件的各种信息
属性描述
file.closed返回true如果文件已被关闭,否则返回false。
file.mode返回被打开文件的访问模式。
file.name返回文件的名称。
f=open(r"filename","rb")
print(f.name) filename
print(f.closed) False
print(f.mode) rb
f.close()
print(f.name) filename
print(f.closed) True
print(f.mode) rb
close()方法
File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入
read()方法
按打开方式是 字节还是字符
read(self, size=-1)
按格式读长度
file.read(2)
r--->2 字符
rb--->2 字节
seek()方法
后面是字节,指定指针位置
seek(self, *args, **kwargs)
file.seek(2)----字节数----gbk--2个字节一个汉字
file.seek(3)----字节数----utf-8--3个字节一个汉字
file.tell()
查看当前指针位置
seek(self, *args, **kwargs)
position = fo.tell();
print("当前文件位置 : ", position)
file.writable()
True if file was opened in a write mode.
file.readable()
True if file was opened in a read mode.
file.flush()
从内存强刷到硬盘
一般文件操作没有完成到硬盘上的时候,数据不会存在
file.readline()
读一行
readline() --------- 每行
for line in file:
print(line.read()) ========>>>>> # python 2 xreadlines()
file.readlines()
返回一个列表
file.truncate()
截取 指针位置前面的数据
- (3) 上下文管理 with open(..) as f:
with open(r'filename',mode='rb') as file:
file.read()
例子
读写操作 字节,字符打开
1
path=r'filename'
file=open(path,encoding='utf-8',mode='r')
a=file.read()
print(a)
file.close()
2
path=r'filename'
file=open(path,'rb')
a=file.read().decode('gbk')
print(a)
file.close()
3
path=r'filename'
file=open(path,mode='w',encoding='utf-8')
file.write('adasdad')
file.close()
4
path=r'filename'
file=open(path,'wb')
file.write('哈哈哈'.encode('utf-8'))
file.close()
- (4) 文件的修改与重命名
文件修改,重命名需要借助 os模块的 remove()和rename()
原文件,读取内容 — 修改 — 重新新建一个文件,接收 — 删除原文件
os模块提供执行文件处理操作的方法,比如重命名和删除文件
rename(current_file_name, new_file_name)
remove(file_name)
例子
file2=open(r'f2','w',encoding='utf-8')
with open(r'f1','r',encoding='utf-8') as file1:
for line in file1:
mylist=line.split('|')
mylist[0]=mylist[0][0:2]
mystr='|'.join(mylist)
file2.write(mystr)
file2.close()
import os
os.remove(r'f1')
os.rename(r'f1',r'f2')
3 目录操作方法 os模块
mkdir()方法
当前目录下创建一个新目录
import os
# 创建目录test
os.mkdir("test")
chdir()方法
切换目录
import os
os.mkdir("d:test")
getcwd()方法
显示当前的工作目录
import os
print(os.getcwd())
rmdir()方法
删除目录,删除之前,它的所有内容应该先被清除
import os
os.rmdir("d:text")
4 常见的文件目录操作方法 附录:
OS 对象方法:
提供了处理文件及目录的一系列方法
序号方法及描述
8
9
10
11
12
13
14
16
17
18
19
20
22
23
24
26
27
28
29
30
31
32
33
34
35
36
37os.mknod(filename[, mode=0600, device])
创建一个名为filename文件系统节点(文件,设备特别文件或者命名pipe)。
38
39
41
43
45
47
48
49
50
52
54
55
57
58
59
61
63
file句柄 对象方法:
序号方法及描述
1关闭文件。关闭后文件不能再进行读写操作。
2刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
3返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。
4如果文件连接到一个终端设备返回 True,否则返回 False。
6从文件读取指定的字节数,如果未给定或为负则读取所有。
8读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节,这是为了减轻读取压力。
10
11截取文件,截取的字节通过size指定,默认为当前文件位置。
12将字符串写入文件,没有返回值。
13向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。