searchfid = ''; ?> PYTHON学习笔记【文件的操作】 - MSCBSC 移动通信论坛 | 国内领先的通信技术论坛
MSCBSC 移动通信论坛
搜索
登录注册
网络优化工程师招聘专栏 4G/LTE通信工程师最新职位列表 通信实习生/应届生招聘职位
 

  • 阅读:1794
  • 回复:0
PYTHON学习笔记【文件的操作】
细阿哥
初级会员
鎵嬫満鍙风爜宸查獙璇


 发短消息    关注Ta 

积分 480
帖子 96
威望 2874 个
礼品券 15 个
专家指数 0
注册 2009-2-25
专业方向  通信
回答问题数 1
回答被采纳数 0
回答采纳率 0%
 
发表于 2019-10-28 08:58:07  只看楼主 

1     文件的操作

操作文件的整体过程(IO操作)

1.      打开或新建一个文件

2.      /写数据

3.      关闭文件

 

打开文件

PYTHON,使用OPEN函数可以打开或创建一个新文件

open(文件名,访问模式)

例如:

F=open(‘test.txt’,’w’)

访问模式

说明

r

打开只读文件,该文件必须存在(默认模式)。

w

打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

a

以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。

r+

打开可读写的文件,该文件必须存在。

w+

打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

a+

以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。

上述的形态字符串都可以再加一个b字符,如rbw+bab+等组合,加入b字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。文件分为文本文件和二进制文件(PDF,WORD,图片)

 

关闭文件COLSE

1

f=open("test.txt",'w'#在当前路径(相对路径)创建文件
f=open("d:\test.txt",'w'#在某个路径(绝对路径)创建文件
f.close()

 

文件的读写

*  文件的写:write()

*  文件的读:read([参数])  参数表示读多少个字节

1

 

f=open("test.txt",'w'#在当前路径(相对路径)创建文件
#f=open("d:\test.txt",'w')  #在某个路径(绝对路径)创建文件
f.write("hello world")
f.close()

 

2

 

f=open("test.txt",'r')
content=f.read()
#形参为空表示读全部内容
#content=f.read(5)#形参5表示读5个字节内容
print(content)
f.close()

 

*  读数据(readlines)

就像read没有参数时一样,readlines可以按照行的方式把整个文件中的内容一次性读取并且返回的是一个列表,其中每一行的数据为一个元素

*  读数据(readline)

readline每次读取一行数据

 

3:文件的复制

source_file = "/home/arvin/python-3.7.2-amd64.exe"
dest_file = "copy-"+source_file[source_file.rfind("/")+1:] #复制到当前目前,并重命>   
print("目标文件名:%s"%dest_file)
#打开文件
source_f = open(source_file,'rb')
dest_f =
open(dest_file,'wb')

#读取原始文件
content = source_f.read()

#把读取的内容写到目标文件
dest_f.write(content)

#关闭文件
source_f.close()
dest_f.close

 

 

*  读取文件时,定位的位置tell()

*  定位到某个位置seek(offset,from)

n  Offset:偏移量

n  From方向

       0表示文件开头

       1表示当前位置

       2表示文件末尾

 

In [1]: ls                                                                          

01-for.py  03-name.py  04-for三角.py

 

In [2]: f=open("01-for.py",'rb')         #打开文件

 

In [3]: c1=f.read(3)                 #读取前3个字节

 

In [4]: c1                                                                          

Out[4]: b"'''"

 

In [5]: post1=f.tell()              #显示位置

 

In [6]: post1                                                                       

Out[6]: 3

 

In [7]: c2=f.read(10)        #再读取10个字节

 

In [9]: c2                                                                          

Out[9]: b' for i in '

 

In [10]: f.seek(0,0)           #将读取的位置设置为从0开始

Out[10]: 0

 

OS模块

OS模块包含普遍的操作系统功能,与平台无关,常用命令如上:

1.      os.name()——判断现在正在使用的平台,WINDOWS返回NT,linux返回POSIX

2.      os.rename(需要修改的文件名,新的文件名),也可以做剪切

3.      os.getcwd——当前的工作目录

4.      os.listdir()——指定所有目录下所有的文件和目录名,以列表的形式全部列举出来,没有区分目录和文件

5.      os.remove——删除指定文件

6.      os.rmdir()——删除指定目录,该目录不能为空

7.      os.mkdir()——创建目录,只能建立一层,递归建立可用os.makedirs()

8.      os.path.isfile()——判断指定对象是否为文件。是返回TRUE,否则FALSE

9.      os.path.isdir()——判断指定对象是否为 目录。是返回TRUE,否则FALSE

10.   os.path.exists()——检验指定的对象是否存在。是返回TRUE,否则FALSE

11.   os.path.split()——返回路径的目录和文件名

 

In [30]: os.path.split("/home/arvin/python/01-for.py")                              

Out[30]: ('/home/arvin/python', '01-for.py')

 

12.   os.getcwd()——获取当前工作的目录

13.   os.system()——执行SHELL命令

14.   os.chdir()——改变目录到指定目录

15.   os.path.getsize()——获得文件大小,如果为目录,返回0

16.   os.path.abspath()——获得绝对路径

17.   os.path.join(path,name)——连接目录和文件名

18.   os.path.basename(path)——返回文件名

19.   os.path.dirname(path)——返回文件所在目录

 

例1,    批量重命名

 

import os
tpath=
"test"
sourcePath=os.path.abspath(tpath)  #动态获得绝对路径
file_list=os.listdir(sourcePath)
for f in file_list:
    source_file=os.path.join(sourcePath
,f)
   
print('源名称:%s'%source_file,end='')
    dest_file=os.path.join(sourcePath
,"re-"+f)
   
print(' 目标名称:%s'%dest_file)
    os.rename(source_file
,dest_file)

 

例2,    目录的递归:

 

import os

def find_hello(parent_dir,file_name):
    file_abspath=os.path.join(parent_dir
,file_name)  #当前正在处理的文件或目录的绝对路径
    #print(file_abspath)
   
if os.path.isdir(file_abspath):  #判断 当前的文件是一个目录
       
for f in os.listdir(file_abspath):  #进入目录,列出目录下所有文件列表
           
find_hello(file_abspath,f)  #递归调用自己本身的函数
   
else:
       
if os.path.isfile(file_abspath) and file_abspath.endswith('.py'): #如果传入的是文件,判断文件是否以PY结尾
           
if read_and_find_hello(file_abspath):  #读取PY文件,查看是否包含HELLO
               
files_list.append(file_abspath)

def read_and_find_hello(py_file):
    flag=
False  #定义一个标记变量,初始为False
   
f=open(py_file,encoding='utf-8') #打开文件
   
with f:
        line=f.readline()
#读其中一行
       
while line:  #有内容时进行下一步循环
           
if 'hello' in line:
                flag=
True
                break
           
line=f.readline()
       
return flag

files_list=[]
find_hello(
'd:\','python')
print(files_list)


扫码关注5G通信官方公众号,免费领取以下5G精品资料
  • 1、回复“sfzds”免费领取《5G室分方案指导书
  • 2、回复“265”免费领取《中国移动 2.6G 5G信令流程详解
  • 3、回复“812”免费领取《中兴5G中级认证真题题库(含答案)
  • 4、回复“5G300”免费领取《300个5G应用案例
  • 5、回复“wh411”免费领取《5G设备维护PPT
  • 6、回复“tk558”免费领取《中兴5G网优初级题库
  • 7、回复“5gbsz”免费领取《《深入浅出:5G移动通信标准与架构》第三版赠阅
  • 8、回复“5gmy”免费领取《5G+MIMO天线阵列校准方法探讨
  • 对本帖内容的看法? 我要点评

     
    [充值威望,立即自动到帐] [VIP贵宾权限+威望套餐] 另有大量优惠赠送活动,请光临充值中心
    充值拥有大量的威望和最高的下载权限,下载站内资料无忧

    快速回复主题    
    标题
    内容
     上传资料请点左侧【添加附件】



    当前时区 GMT+8, 现在时间是 2020-08-16 00:00:21
    渝ICP备11001752号  Copyright @ 2006-2016 mscbsc.com  本站统一服务邮箱:mscbsc@163.com

    Processed in 0.322260 second(s), 13 queries , Gzip enabled
    TOP
    清除 Cookies - 联系我们 - 移动通信网 - 移动通信论坛 - 通信招聘网 - Archiver