/* */

python08——文件操作与模块

1.文件打开关闭与读写

打开文件、写入文件

fobj=open('test.txt','w',encoding='utf-8')   ##打开文件
fobj.write('大风大雨我不怕')  ##写入文件
fobj.write('一边走一边唱')  ##写入文件
fobj.close()   ##保存并关闭
fobj=open('test.txt','wb')  #str-->bytes  ##打开文件
fobj.write('在乌云下'.encode('utf-8'))  ##写入文件
fobj.close()   ##保存并关闭
fobj=open('test.txt','a')  #str-->bytes  ##打开文件
fobj.write('在乌云下\n')  ##写入文件
fobj.write('发呆\n')
fobj.close()   ##保存并关闭

w——会覆盖

a——会追加

wb——以二进制格式覆盖

以二进制的形式去写数据

 

读文件:

read()——将文件内容全部取出

readlines()——按行读取,一次性读取所有内容,返回一个列表,每行内容作为一个元素

f=open('test.txt','r')
#print(f.read(5))  #读5个
#print(f.read())  #读全部  会接在5个后面读全部
#print(f.readline())  #读一行
#print(f.readline())  #再读一行
#print(f.readlines())  #按行读取全部,返回列表

r——只读

rb——以二进制模式读(适用于图片、视频、音频)

f=open('test.txt','rb')
data=f.read()
print(data.decode('utf-8'))
f.close()

with语句:  自动关闭文件

with open('test.txt','r') as f:
    print(f.read())

 

3.应用:文件备份脚本

 一次性读取,只适用于小文件

def bkFile():
    ###接收用户输入的文件名
    old_file=input('请输入要备份的文件:')
    file_list=old_file.split('.')
    ##构造新的文件名,加上备份的的后缀
    new_file=file_list[0]+'_备份.'+file_list[1]
    old_f=open(old_file,'r')
    new_f=open(new_file,'w')    ##以写的模式打开新文件,不存在就创建
    content=old_f.read()
    new_f.write(content)
    old_f.close()
    new_f.close()
bkFile()
一次性读取
def bkBigFile():
    ###接收用户输入的文件名
    old_file=input('请输入要备份的文件:')
    file_list=old_file.split('.')
    ##构造新的文件名,加上备份的的后缀
    new_file=file_list[0]+'_备份.'+file_list[1]
    try:
        ###监视要处理的逻辑
            with open(old_file,'r') as old_f,open((new_file),'w') as new_f:
                while True:
                    content=old_f.read(1024)
                    new_f.write(content)
                    if len(content)<1024:
                        break
    except Exception as msg:
            print(msg)


bkBigFile()
分块读取

4.文件定位

 tell()     当前文件指针读取到的位置,通过tell获取 

with open('test.txt','r') as f:
    print(f.read(3))
    print(f.tell())
    print(f.read(2))
    print(f.tell())    ##返回当前指针的位置:5

truncate    可以对源文件进行截取操作

fobjA=open('test.txt','r+')
fobjA.truncate(15)   ##保留前15个字符
print(fobjA.read())
fobjA.close()

seek(offset,from)     定位某个位置。偏移量offset,负数往回偏移,正数往前偏移;位置from,0开头,1当前,2末尾。

d=open('test.txt','rb')  ###使用seek得使用rb模式
print(d.read(5))   
print(d.seek(-2,1))
d.close()

5.模块介绍

#import  导入模块  
import time
#调用的时候time.函数名
time.ctime()
#取别名:
import time as mytime

##部分导入的方法(调用时不用前缀了)
from time import ctime,time
from time import *全部导入

一个.py文件就是一个模块,模块中的变量名作用只在本模块中

###三种导入方式
import  moduleTest
#from moduleTest import add
#from moduleTest import *
res=moduleTest.add(1,2)
print(res)
print(moduleTest.diff(2,1))

moduleTest.py文件:

__all__=['add','diff']   ##from…import *只能调用被all声明的
def add(x,y):
    return x+y
def diff(x,y):
return x-y

6.os模块操作文件

 

#####常用方法:
#修改文件名: rename(需要修改的文件名,新的文件名)
import os
os.rename(‘1.py ' ,'666.py ' )
#删除文件: remove(待删除的文件名)
import os
os.remove( '3.py ' )
#创建文件夹: mkdir(文件夹名称)
import os
os.mkdir( 'gl ')
#删除文件夹: rmdir(文件夹名称)
import os
os.rmdir( 'gl')
#获取当前目录: getcwd()
import os
os.getcwd()
#切换目录: chdir(路径)
import os
os.chdir( ' ../' )
#路径拼接:os.path.join(path1[, path2[, …])将多个路径组合后返回
import os
path =os.path.join(os.getcwd(), 'gl')

7. 模块的制作、发布、安装

模块的制作与发布:

①新建一个文件夹test,将moduleTest.py放进去,新建一个setup.py,内容如下:

from distutils.core import setup
#name模块名称
#version 版本号#description描述#author作者
#py_modules要发布的内容
setup(name="test", version="1.0", description="my module",
author="yh", py_modules=[ 'moduleTest'])

②在terminal中进去test中,输入命令:python setup.py build

③生成压缩包:python setup.py sdist

安装:

解压安装包,进入test-1.0目录下执行:pythonsetup.py install

 

习题:

1、现在有一个5G的大文件需要做备份,请写一个脚本备份这个文件。
2、有一批文件需要在文件名加上日期,比如文件“亚瑟.py”,要重命名成“2020-6-9_亚瑟.py请编写程序完成重命名,(提示: 这个脚本会将当前文件夹下的所有文件重命名,最好新建
一个测试文件夹完成)
3、time, os模块使用(练习模块使用方法,熟悉模块各个方法)。
4、编写一个自己的模块,发布并安装。
5、题目:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中。
6、Python简陋版工资管理系统
要求:
彦100000盖伦80000莫甘娜50000赵信30000
以上是info.txt文-----实现效果:
从info.txt文件中读取员工及其工资信息,最后将修改或增加的员工工资信息也写入原info.txt文件。
View Code

 

 
posted @ 2020-12-10 11:03  柚柚汁呀  阅读(188)  评论(0编辑  收藏  举报
/*
*/