以下所有的实操全在redhat7.3真机上pycharm


打开文件的三步:打开->操作->关闭
r(默认)
-只能读,不能写
-读取文件不存在,报错
r+:
-可读,可写
-文件不存在,会报错
-默认情况下,从文件指针所在位置开始写入
w:
-write only
-会清空文件之前的内容
-文件不存在,会创建新文件并写入
w+:
-rw
-会清空文件内容
-文件不存在,会创建新文件并写入
a:
-write only
-不会清空文件内容
-文件不存在,会创建新文件并写入
a+:
-rw
-文件不存在,不报错
-不会清空文件内容

python console只读模式_文件指针

#r(默认)
f = open('/zhao/passwd')
content = f.read()
print(content)
#f.write('zhao') #写入的时候报错

#判断文件对象拥有的权限
print(f.readable())
print(f.writable())
f.close()

python console只读模式_文件指针_02

r+:
-可读,可写
-文件不存在,会报错
-默认情况下,从文件指针所在位置开始写入

f = open('/zhao/passwd','r+')
content = f.read()
print(content)
f.write('wangyibo') 

#判断文件对象拥有的权限
print(f.readable())
print(f.writable())
f.close()

python console只读模式_换行符_03


python console只读模式_换行符_04


#w

w:
-write only
-会清空文件之前的内容
-文件不存在,会创建新文件并写入

f = open('/zhao/passwd','w')
#content = f.read()
#print(content)
f.write('zhao') #写入的时候报错

#判断文件对象拥有的权限
print(f.readable())
print(f.writable())
f.close()

python console只读模式_文件指针_05


python console只读模式_文件指针_06


#查看指针所在的位置

f = open(’/zhao/passwd’,‘r+’)

content = f.read() #读取会报错

print(content)

print(f.tell()) #tell()查看指针的位置

f.write(‘zhao’)

print(content)

print(f.tell())

##判断文件对象拥有的权限
print(f.readable())
print(f.writable())
f.close()

python console只读模式_换行符_07

文件的读取

文件过于大,不能用.read(),.readline(),readlines()读取,因为读取的时候是文件内容是存放在内存中读取的,那么当文件过于大时,很容易让内存爆掉,系统直接死机;
解决放案:
1、看到文件这么大,我们的第一反应都是把文件分割成小块的读取不就好了吗
2、使用with open()
3、fileinput处理

f = open('/zhao/passwd','rb')  #rb:可以读取二进制文件
#print(f.read())
#print(f.readline())
#print(f.readlines())

#readlines():读取文件内容,返回一个列表,列表元素分别未文件行
的内容

#print(f.read(5))
#取消换行符\n
#print([line.strip() for line in f.readlines()]) #.strip()去除字符;
#利用map函数方法:取消换行符\n
print(list(map(lambda x:x.strip(),f.readlines())))
f.close()

python console只读模式_换行符_08

f = open('/zhao/passwd','rb+')
#f.write('hello')
print(f.tell())
print(f.read())
print(f.tell())
#f.writable(['a','b'])
f.close()

python console只读模式_换行符_09


seek方法:

0:不偏移
1:当前指针位置
先执行第二位,再执行第一位
(-2,2):先移动末尾在向左移动两位;
文件指针移动的方式查看,需要用rb的方式查看;
seek方法,移动指针
seek第一个参数是偏移量:>0,代表向右移动,<0,代表向左移动
seek第二个参数是:
0:移动指针到文件开头
1:不移动指针
2:移动指针到末尾

#f.seek(0)
#f.seek(1,2)
#print(f.read())

print(f.read())
f.seek(-2,2)
print(f.tell())
f.close()

python console只读模式_读取文件_10

非纯文本文件的读取

#将hi.jpg文件移动到根目录下/home/kiosk/PycharmProjects/20180827/day04
f1 = open('hi.jpg',mode='rb')
content = f1.read()
f1.close()

f2 = open('hello.jpg',mode='wb')
f2.write(content)
f2.close()

python console只读模式_文件指针_11