# _*_ coding:utf-8 _*_
"""
file: 01.py
date: 2018-07_24 2:17 PM
desc:
操作文件的函数/方法
在python中要操作文件需要记住的一个函数和三个方法
# python中一切皆对象
open :打开文件,并且返回文件操作对象
read :将文件内容读取到内存
write :将指定内容写入内存
close :关闭文件
open函数负责打开文件,并且返回文件对象
read/write/close三个方法都需要通过文件对象来调用
read方法---读取文件
open函数的第一个参数是要打开的文件名(文件名区分大小写)
如果文件存在,返回文件操作对象
如果文件不存在,会抛出异常
read方法可以一次性读入并返回文件的所有内容
close方法负责关闭文件
"""
# 新建一个文本,名为README,内写的是Hello Python
# 如果忘记关闭文件,会造成系统消耗,并影响后续 打开
# 1.打开文件
file = open('README')
# 2.操作文件 读/写
# read方法:读取文件内容(一次性返回文件所有内容)
text = file.read()
print text
# 3.关闭文件
# close方法:负责关闭文件
file.close()
# 在开发中,通常会先编写打开和关闭文件的代码
# _*_ coding:utf-8 _*_
"""
file: 02.py
date: 2018-07_24 2:38 PM
desc:
"""
file = open('README')
text = file.read()
print text
print '@' * 50
# 第一次读取的时候,文件指针移动到了文件的末尾
# 再次调用不会读取到任何内容
text = file.read()
print text
file.close()
# _*_ coding:utf-8 _*_
"""
file: 03.py
date: 2018-07_24 2:46 PM
desc:
文件指针:
文件指针标记从哪个位置开始读取数据
第一次打开文件时,通常文件指针会指向文件的开始位置
当执行了read方法后,文件指针会移动到读取内容的末尾
"""
file = open('README')
text = file.read()
print text
# 打印输出内容的长度
print type(text)
print len(text)
print '*' * 50
text = file.read()
print text
print len(text)
file.close()
# _*_ coding:utf-8 _*_
"""
file: 04.py
date: 2018-07_24 3:04 PM
desc:
"""
# 打开文件的方式:
# name = open('文件名','访问方式')
# 以写的方式打开文件,如果文件存在,会被覆盖,如果不存在,会创建
# 'w' 方式会覆盖文件内容
file = open('README','w')
file.write('rtyuioretyu')
file.close()
# 执行结果为 文件README内由Hello Python 变为 rtyuioretyu
# _*_ coding:utf-8 _*_
"""
file: 05.py
date: 2018-07_24 3:07 PM
desc:
"""
# 'a'方式会追加到文件后
# 如果该文件存在,文件指针会放在文件末尾
file = open('README','a')
file.write('rtyuioretyu')
file.close()
# _*_ coding:utf-8 _*_
"""
file: 06.py
date: 2018-07_24 3:18 PM
desc:
按行读取文件
read方法默认会把文件的所有内容一次性读到内存
如果文件太大,对内存占用会非常严重
readline方法
readline方法可以一次性读取一行内容
方法执行后,会把文件指针移动到下一行,准备再次读取
"""
# 读取大文件
file = open('README')
# 为什么要写成死循环:因为我们不知道要读取的文件有多少行
while True:
text = file.readline()
# 如果文件指针到文件的最后一行,那么就读不到内容了
if not text:
break
# 每读取一行,末尾都已经有一个\n
print text
file.close()
# _*_ coding:utf-8 _*_
"""
file: 07.py
date: 2018-07_24 3:36 PM
desc:
"""
# 源文件以只读方式打开
file_read = open('README')
# 目标文件以写的方式打开
file_write = open('README_COPY','w')
# 从源文件中读取内容
text = file_read.read()
# 将读取到的内容写到目标文件中
file_write.write(text)
file_read.close()
file_write.close()
# 复制一个文件README_COPY
# _*_ coding:utf-8 _*_
"""
file: 08.py
date: 2018-07_24 3:50 PM
desc:
"""
file_read = open('README')
file_write = open('README_COPY','w')
# 读写
while True:
text = file_read.readline()
if not text:
break
file_write.write(text)
file_read.close()
file_write.close()
# _*_ coding:utf-8 _*_
"""
file: 01.py
date: 2018-07_24 4:13 PM
desc:
关键字with在不需要访问文件后将其关闭,在这个程序中,
我们调用了open(),但没有调用close();你也可以调用open()和close来打开和关闭文件,
但这样做时,如果文件存在bug,导致close()语句没有执行,
文件将不会关闭,未妥善的关闭文件可能会导致数据丢失或受损
如果在程序中过早的调用close()
你会发现需要使用文件时他已经关闭(无法访问)
这会导致更多的错误,你并非在任何情况下都能轻松的确定关闭文件的恰当时机
通过with结构,可以让python去确定
你只要打开文件,并在需要时使用他
python会在适当的时候自动关闭他
"""
# 这是打开文件的另一种方式,执行效果与前面相同
with open('hello') as file_object:
contents = file_object.read()
print contents
# _*_ coding:utf-8 _*_
"""
file: 02.py
date: 2018-07_24 4:15 PM
desc:
"""
# 打印一行追加空格
filename = 'hello'
with open(filename) as file_object:
for line in file_object:
print line
# _*_ coding:utf-8 _*_
"""
file: 03.py
date: 2018-07_24 4:16 PM
desc:
"""
filename = 'hello'
with open(filename) as file_object:
lines = file_object.readline()
for line in lines:
print line
# _*_ coding:utf-8 _*_
"""
file: 04.py
date: 2018-07_24 4:18 PM
desc:
"""
filename = 'linux'
with open(filename,'w') as file_object:
file_object.write('I love python.\n')
file_object.write('I love linux.')
# _*_ coding:utf-8 _*_
"""
file: 05.py
date: 2018-07_24 4:20 PM
desc:
关键字with在不需要访问文件后将其关闭,在这个程序中,
我们调用了open(),但没有调用close();你也可以调用open()和close来打开和关闭文件,
但这样做时,如果文件存在bug,导致close()语句没有执行,
文件将不会关闭,未妥善的关闭文件可能会导致数据丢失或受损
如果在程序中过早的调用close()
你会发现需要使用文件时他已经关闭(无法访问)
这会导致更多的错误,你并非在任何情况下都能轻松的确定关闭文件的恰当时机
通过with结构,可以让python去确定
你只要打开文件,并在需要时使用他
python会在适当的时候自动关闭他
"""
filename = 'linux'
with open(filename,'a') as file_object:
file_object.write('I love python.\n')
file_object.write('I love linux.')