基于linux下python的学习(文件操作、模块)
一、文件操作
操作文件的函数/方法
在python中要操作文件需要记住的1个函数和3个方法
#python中一切皆对象
open :打开文件,并且返回文件操作对象
read :将文件内容读取到内存
write :将指定内容写入文件
close :关闭文件
open函数负责打开文件,宾且返回文件对象
read/write/close三个方法都需要通过文件对象来调用
read方法--读取文件
open函数的第一个参数是要打开的文件名(文件名区分大小写)
如果文件存在,返回文件操作对象
如果文件不存在,会抛出异常
read方法可以一次性读入并返回文件的所有内容
close方法负责关闭文件
"""
1、# 如果忘记关闭文件,会造成系统消耗,而且会影响到后续对文件的访问
# 1.打开文件
file = open('REDME')
# 2.操作文件 读/写
# read方法:读取文件内容(一次性返回文件的所有内容)
text = file.read()
print text
# 3.关闭文件
# close方法:负责关闭文件
file.close()
# 在开发中,通常会先编写打开和关闭的代码
2、
文件指针:
文件指针标记从哪个位置开始读取数据
第一次打开文件时,通常文件指针会指向文件的开始位置
当执行了read方法后,文件指针会移动到读取内容的末尾
"""
# 1.打开文件
file = open('REDME')
# 2.操作文件 读/写
# read方法:读取文件内容(一次性返回文件的所有内容)
text = file.read()
print text
print '*' * 50
# 第一次读取的时候,文件指针移动到了文件的末尾
# 再次调用不会读取到任何内容
text = file.read()
print text
# 3.关闭文件
# close方法:负责关闭文件
file.close()
3、
# 1.打开文件
file = open('/home/kiosk/file')
# 2.操作文件 读/写
# read方法:读取文件内容(一次性返回文件的所有内容)
text = file.read()
print text
# 打印输入内容的长度
print type(text)
print len(text)
print '*' * 50
text = file.read()
print text
print len(text)
# 3.关闭文件
# close方法:负责关闭文件
file.close()
4、
打开文件的方式:
name = open('文件名','访问方式')
"""
# 以写的方式打开文件,如果文件存在会被覆盖,如果文件不存在,创建新文件
#1.打开文件
file = open('REDME','w')
# 2.写入文件
file.write('hello')
# 3.关闭文件
file.close()
5、
# 以追加方式打开文件
# 如果该文件存在,文件指针会放在文件的末尾
# 如果文件不存在,创建文件并写入
# 1.打开文件
file = open('REDME','a')
# 2.写入文件
file.write('linux')
# 3.关闭文件
file.close()
6、
按行读取文件
read方法默认会把文件的所有内容一次性读到内存
如果文件太大,对内存的占用会非常严重
readline方法:
readline方法可以一次性读取一行内容
方法执行后,会把文件指针移动到下一行,准备再次读取
"""
# 读取大文件的正确姿势
file = open('REDME')
# 为什么要写成死循环:因为我们不知道要读取的文件有多少行
while True:
text = file.readline()
# 如果文件指针到文件的最后一行,那么就读不到内容了
if not text:
break
# 每读取一个行,末尾都已经有一个\n
print text
file.close()
7、
# 1.打开文件
# 源文件以只读的方式打开
file_read = open('REDME')
# 目标文件以写的方式打开
file_write = open('README_COPY','w')
# 从源文件中读取内容
text = file_read.read()
# 将读取到的内容写到目标文件中
file_write.write(text)
# 关闭文件
file_read.close()
file_write.close()
8、
# 1.打开文件
file_read = open('REDME')
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()
二(文件操作2)
关键字with在不需要访问文件后将其关闭,在这个程序中,
我们调用了open(),但没有调用close();你也可以调用open()和close来打开
和关闭文件,但这样做时,如果程序存在bug,导致close()语句没有执行,
文件将不会关闭,未妥善地关闭文件可能会导致数据丢失或受损,
如果在程序中过早地调用close(),
你会发现需要使用文件时它已经关闭(无法访问),
这会导致更多地错误,你并非在任何情况下都能轻松地确定关闭文件地恰当时机
通过使用with结构,可让python去确定,
你只管打开文件,并在需要时使用它,
python会在合适的时候自动将其关闭
"""
1、
with open('pi_digits') as file_object:
contents = file_object.read()
print contents
2、
filename = 'pi_digits'
with open(filename) as file_object:
for line in file_object:
print line
3、
filename = 'pi_digits'
with open(filename) as file_object:
lines = file_object.readline()
for line in lines:
print line
4、
filename = 'linux'
with open(filename,'w') as file_object:
file_object.write('I love python.\n')
file_object.write('I love linux.')
5、
filename = 'linux'
with open(filename,'a') as file_object:
file_object.write('I love python.\n')
file_object.write('I love linux.')
三、模块
test1:
title = '模块1'
# 函数
def say_hello():
print '我是%s' % title
# 类
class Cat(object):
pass
test2:
title = '模块2'
# 函数
def say_hello():
print '我是%s' % title
# 类
class Dog(object):
pass
1、
# 在导入模块时,每个导入应独占一行
import test1
import test2
test1.say_hello()
test2.say_hello()
cat = test1.Cat()
print cat
dog = test2.Dog()
print dog
2、
# 使用as指定模块的别名(大驼峰命名法)
import test1 as CatXi
import test2 as DogXi
CatXi.say_hello()
DogXi.say_hello()
cat = CatXi.Cat()
print cat
dog = DogXi.Dog()
print dog
3、
from test1 import Cat
from test2 import say_hello
say_hello()
miaomiao = Cat()
print miaomiao
4、
from test1 import Cat
from test2 import say_hello # 此时test2的say_hello会被覆盖,不能显示
from test1 import say_hello
say_hello()
miaomiao = Cat()
print miaomiao
5、
from test1 import Cat
from test2 import say_hello
from test1 import say_hello as test1_say_hello
say_hello()
miaomiao = Cat()
print miaomiao
test1_say_hello()
6、
python的解释器在导入模块的时候,会:
1、搜索当前目录指定的模块文件,如果有就直接导入
2、如果没有,再搜索系统目录
注意:在开发时,给文件起名,不要和系统模块文件重名
"""
import random
rand = random.randint(0,10)
print rand
test09:
#全局变量、函数、类直接执行的代码不是向外界提供的工具
def say_hello():
print 'hello hello'
say_hello()
1、
import test09
test10:
__name__属性
可以做到,测试模块的代码只在测试情况下被运行,而在被导入时不会执行
__name__是python的一个内置属性,记录着一个字符串,如果是被其他文件导入
时,__name__就是文件名(模块名),如果是当前执行的程序,__name__就是__main__
"""
#全局变量、函数、类直接执行的代码不是向外界提供的工具
def say_hello():
print 'hello hello'
# 如果直接再模块中输入print __name__得到的是__main__
if __name__ == '__main__':
print __name__
# 文件被导入时,能够直接被执行的代码不需要被执行
print 'lily 开发的程序'
say_hello()
1、
在很多python文件中会看到以下格式的代码
#导入模块
#定义全部变量
#定义类
#定义函数
#再代码的下方
def main():
pass
if __name__ =='__main__':
main()
"""
import test10
更多推荐
所有评论(0)